复制构造函数和复制赋值运算符是否应具有相同的语句?
Should the copy constructor and copy assignment operator have the same statements?
返回类型当然会有所不同,但概念是相同的:将数据从一个对象复制到另一个对象,对吗?
概念是根本不同的;复制构造函数创建一个不存在的新对象(并且不返回任何内容 - 甚至不返回void
(,赋值运算符更新已经存在的对象。
No.当复制赋值运算符将数据复制到另一个对象时,复制构造函数使用复制的数据初始化新对象。因此,它将使用其成员初始值设定项列表以递归方式调用其成员的复制构造函数,而复制赋值运算符将调用其他复制赋值运算符。
struct Foo {
Foo(Foo const &orig)
: data{oring.data} { }
Foo &operator = (Foo const &orig) {
data = orig.data;
return *this;
}
private:
std::string data;
};
copy constructor
使用已存在的对象初始化新对象。
copy assignment
将一个对象的值分配给另一个对象,这两个对象都已经存在。
相关文章:
- C++17复制构造函数,在std::unordereded_map上进行深度复制
- 在C++程序中输入的文本文件将不起作用,除非文本被复制和粘贴
- 使用strcpy将char数组的元素复制到另一个数组
- 是否可以初始化不可复制类型的成员变量(或基类)
- 为什么在C++中使用私有复制构造函数与删除复制构造函数
- C++ Windows 驱动程序MSB3030无法复制该文件,因为它找不到
- 复制列表初始化的隐式转换的等级是多少
- 我的简单if-else语句是如何无法访问的代码
- 有一个打印语句的函数是一种糟糕的编程实践吗
- 线程,如果else语句,都是错误的上下文切换后,会发生什么
- 为什么是0;C++中的有效语句
- 当从函数参数中的临时值调用复制构造函数时
- 在c++中的复制构造函数/一个声明语句中的初始化的延续中使用chain方法
- 复制构造函数和复制赋值运算符是否应具有相同的语句?
- C NRVO/复制Elision在括号中带有返回语句
- C++11 是否保证 return 语句中的局部变量将被移动而不是复制?
- 复制 ELISION:在 return 语句中使用三元表达式时未调用移动构造函数
- 可以在synchronize with语句之间进行复制省略
- 可以在catch语句中复制省略
- 复制语句如何识别其构造函数