c++类会自动生成拷贝构造函数(operator=),是不是就意味着我们没有必要重写这个函数了???
时间:2011-12-16
来源:互联网
我感到很疑惑...........
作者: daoluanxiaozi 发布时间: 2011-12-16
有传说中的深拷贝和浅拷贝
作者: peng_weida 发布时间: 2011-12-16
拷贝构造函数只有在用一个对象来初始化定义一个新对象才会调用
假设对象成员有指针 会引起多次delete而导致程序崩溃
作者: sryan 发布时间: 2011-12-16
2. 缺省的拷贝赋值操作符是浅拷贝。如果你的代码用浅拷贝就能解决,那就不用自己实现,否则就需要。
作者: pathuang68 发布时间: 2011-12-16
operator=不是拷贝构造函数啊!
拷贝构造函数只有在用一个对象来初始化定义一个新对象才会调用
假设对象成员有指针 会引起多次delete而导致程序崩溃
我表示很惭愧,应该叫拷贝赋值操作符重载...
那问题就变为“c++类会自动生成拷贝赋值操作符重载(operator=),是不是就意味着我们没有必要重写这个函数了???”
作者: daoluanxiaozi 发布时间: 2011-12-16
1. operator = 不叫拷贝构造函数,而是叫拷贝赋值操作符。
2. 缺省的拷贝赋值操作符是浅拷贝。如果你的代码用浅拷贝就能解决,那就不用自己实现,否则就需要。
我表示很惭愧,应该叫拷贝赋值操作符重载...
那问题就变为“c++类会自动生成拷贝赋值操作符重载(operator=),是不是就意味着我们没有必要重写这个函数了???”
作者: daoluanxiaozi 发布时间: 2011-12-16
作者: AnDay_Fly 发布时间: 2011-12-16
引用 2 楼 sryan 的回复:
operator=不是拷贝构造函数啊!
拷贝构造函数只有在用一个对象来初始化定义一个新对象才会调用
假设对象成员有指针 会引起多次delete而导致程序崩溃
我表示很惭愧,应该叫拷贝赋值操作符重载...
那问题就变为“c++类会自动生成拷贝赋值操作符重载(operator=),是不是就意味着我们没有必要重写这个函数了???”
no
假设a类有个int *成员,有实例instA和instB,instA=instB,instA的int*由于默认operator=的关系也指向了instB,当A析构的时候instB中的指针指向已经被释放了,然后B再析构就会出错
google 深拷贝 浅拷贝
或者好好看书 书上有的
作者: sryan 发布时间: 2011-12-16
引用 4 楼 daoluanxiaozi 的回复:
引用 2 楼 sryan 的回复:
operator=不是拷贝构造函数啊!
拷贝构造函数只有在用一个对象来初始化定义一个新对象才会调用
假设对象成员有指针 会引起多次delete而导致程序崩溃
我表示很惭愧,应该叫拷贝赋值操作符重载...
那问题就变为“c++类会自动生成拷贝赋值操作符重载(operator=),是不是就……
对深拷贝和浅拷贝了解了,就是不知道缺省的赋值操作符重载的是简单的赋值而已...
作者: daoluanxiaozi 发布时间: 2011-12-16
#include <iostream> using namespace std; class CA { public: CA(int b,char* cstr) { a=b; str=new char[b]; strcpy(str,cstr); } CA(const CA& C) { a=C.a; str=new char[a]; //深拷贝 if(str!=0) strcpy(str,C.str); } void Show() { cout<<str<<endl; } ~CA() { delete str; } private: int a; char *str; }; int main() { CA A(10,"Hello!"); CA B=A; B.Show(); return 0; }
作者: cxxer 发布时间: 2011-12-16
热门阅读
-
office 2019专业增强版最新2021版激活秘钥/序列号/激活码推荐 附激活工具
阅读:74
-
如何安装mysql8.0
阅读:31
-
Word快速设置标题样式步骤详解
阅读:28
-
20+道必知必会的Vue面试题(附答案解析)
阅读:37
-
HTML如何制作表单
阅读:22
-
百词斩可以改天数吗?当然可以,4个步骤轻松修改天数!
阅读:31
-
ET文件格式和XLS格式文件之间如何转化?
阅读:24
-
react和vue的区别及优缺点是什么
阅读:121
-
支付宝人脸识别如何关闭?
阅读:21
-
腾讯微云怎么修改照片或视频备份路径?
阅读:28