这是复制构造函数省略
Is this copy constructor elision?
下面的代码不调用复制构造函数。
struct X
{
int x;
X(int num)
{
x = num;
std::cout << "ctor" << std::endl;
}
X(const X& other)
{
std::cout << "copy ctor" << std::endl;
}
};
int main(int argc, _TCHAR* argv[])
{
X* x = new X(3);
X* y(x);
}
输出:
ctor
是抄袭省略吗?
代码
X* x = new X(3);
X* y(x);
与
X x(3);
X* y = new X(x);
您不是在复制对象,而是在复制指针。X* y(x);
之后,两个指针将指向同一个对象。
相关文章:
- 模板,函数使用错误的构造函数来复制我的对象
- 在引用初始化中使用已删除的复制构造函数进行复制初始化
- C++:右值引用构造函数和复制省略
- 如何编写复制构造函数来复制指针?
- 字符串是否在其构造函数中复制数据
- 复制构造函数和复制赋值运算符是否应具有相同的语句?
- 指定不用作复制构造函数的复制构造函数
- 为什么具有 2 个参数参数的构造函数接受复制对象作为 1 个参数参数?
- 为什么模板构造函数比复制构造函数更受欢迎?
- 在C++中移动构造函数和复制构造函数
- C++ 如何在容器类复制构造函数中复制分配器对象
- C++ 构造函数和复制构造函数
- C - 构造函数,复制构造函数,MOVE构造函数,驱动器
- 复制构造函数和复制分配操作员
- 构造函数在复制矢量中的类时调用
- C 非堆工厂对象创建具有受保护的构造函数和复制构造函数
- 显式关键字,移动构造函数和复制构造函数,并禁用移动和复制构造函数
- 为什么C++编译器会创建复制构造函数和复制赋值运算符
- 在类层次结构中,完美的转发构造函数和复制构造函数之间的冲突
- 在复制构造函数中复制唯一指针数组的内容