|
1
2
赋值运算符应该为“this”赋值,而不是分配新的值。
一般来说,您不应该使用new返回在堆上分配的内容,因为任何所有权信息都会丢失。您可能应该尝试使用智能指针,如std::unique_ptr。 |
![]() |
2
1
答案已经发布,但使用的方法是让赋值运算符完成大部分工作。 由于您已经对复制构造函数进行了编码,因此应该使用复制/交换习惯用法编写赋值运算符: What is the copy-and-swap idiom? 通常要做的(如果你想在赋值运算符和复制构造函数之间发挥协同作用)是让复制构造函数完成大部分工作,而赋值运算符使用复制构造函数(和析构函数)。 以下是使用复制/交换的代码:
调用的函数
假设您的复制构造函数是无错误的,并且您的析构函数正在工作并且没有错误,那么上面的代码将正常工作。
编辑:制造
|
![]() |
rookie · 检查函数模板的所有参数包参数是否属于int 1 年前 |
![]() |
ivaigult · -W转换和隐式字符串到布尔类型转换 1 年前 |
![]() |
rainer · 后台插入程序的初始化 1 年前 |
![]() |
Community wiki · 以理智、安全和高效的方式复制文件 1 年前 |
|
Shefali Kanaujia · 对C中向量的向量进行排序++ 1 年前 |
|
Ma Joonyoung · 粗粒度和细粒度链表的时间比较 1 年前 |