问题标签 [default-copy-constructor]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
0 回答
40 浏览

c++ - 如何使模板重载复制构造函数?

在尝试使用模板函数作为复制构造函数时,(我该怎么做)我只想出了 3 个解决方案:

结构 A:

但是如果我从这个函数继承,他们将有一个非常量引用的默认复制构造函数。

反之:

将避免对 const 正确性进行静态检查。

我试过了,template <typename D, int> A(D&) {};但我不知道如何参数化构造函数,所以<typename D> A(D&, int e=0) {};我想到了。但这将是不可接受的,因为调用者编译代码的责任是添加该 0 默认参数。<-- 这又是一个问题,在没有模板参数推导的情况下,如何对构造函数进行参数化呢?

我想把它封装在一个(constexpr)类中,但是对于这么简单的事情来说太多了?.

请注意,制作单独的函数不起作用,因为它错过了初始化程序。我想通过在一个可能不同的文件中更改模板来更改复制构造函数。

0 投票
1 回答
270 浏览

c++ - 默认复制构造函数

我遇到了复制构造函数并使用指针作为类的成员变量的想法。讲师告诉我,如果我们使用默认的复制构造函数为具有指针类型成员变量的类创建实例,默认的复制构造函数将使用浅拷贝并导致编译器两次删除相同的内存空间。但是当我尝试使用相同的代码时,我没有发现相同的问题,并且当我从不同的实例输出两个指针的地址时,输出是不同的。我想知道编译器本身是否已将其调整为默认复制构造函数的深度复制,或者代码有问题。谢谢!

0 投票
0 回答
20 浏览

c++ - 参数化构造函数未显式调用,但在隐式调用时调用

我创建了一个名为Rectangle的类并实现了一个参数化构造函数并创建了 Rectangle 类的三个实例

编译此源代码文件时没有问题。

但是在实现复制构造函数之后,我得到了一个错误。

错误信息

为什么在实现复制构造函数之后会发生这种情况,并且只针对显式构造函数调用?