1. 我所有的类中,都没有用指针变量。都是最普通的int,double,顶多有一些vector,string之类的。有没有必要将拷贝构造函数弄成私有的从而避免“指针拷贝”?
2. 如果要自己写拷贝构造函数,我的一个类或者结构体里面有20多个变量,难道要一个一个重新拷贝值么?其中有5、6个vector对象,难道要遍历一遍vector把数值都挖出来,一个个push_back到新的vector里面?
3. class, struct,vector的拷贝构造函数的实现,到底是一个个复制值,还是可以用 memcpy之类的办法?也就是说,class, struct, vector等这一类常用的东西在内存中是不是连续的?
7 个解决方案
#1
1. 可以不用,最好写
2.传引用
3.传引用
2.传引用
3.传引用
#2
1.
我觉得可以不用自己写拷贝构造函数
默认的拷贝构造函数就可以了
vector 支持 = 赋值
string 也支持 = 赋值
我觉得可以不用自己写拷贝构造函数
默认的拷贝构造函数就可以了
vector 支持 = 赋值
string 也支持 = 赋值
#3
1.拷贝构造函数并不是一无是处啊,竟然没有指针,为啥不用。
2.要重新一个一个拷贝,拷贝vector用vector的拷贝构造函数。
3.vector,string在内存中是连续的
2.要重新一个一个拷贝,拷贝vector用vector的拷贝构造函数。
3.vector,string在内存中是连续的
#4
1.可以
放心使用系统给你合成的拷贝构造函数
2.建议使用列表初始化,也可用=运算符……
3.vector指向的数据是连续的,但是memcpy不能用……
2.建议使用列表初始化,也可用=运算符……
3.vector指向的数据是连续的,但是memcpy不能用……
#5
如果都没用指针。。可以不写
默认的拷贝函数就是用memcpy
默认的拷贝函数就是用memcpy
#6
不好意思。。这边我说错了。。。默认的拷贝函数也不是用memcpy。。
#7
.
#1
1. 可以不用,最好写
2.传引用
3.传引用
2.传引用
3.传引用
#2
1.
我觉得可以不用自己写拷贝构造函数
默认的拷贝构造函数就可以了
vector 支持 = 赋值
string 也支持 = 赋值
我觉得可以不用自己写拷贝构造函数
默认的拷贝构造函数就可以了
vector 支持 = 赋值
string 也支持 = 赋值
#3
1.拷贝构造函数并不是一无是处啊,竟然没有指针,为啥不用。
2.要重新一个一个拷贝,拷贝vector用vector的拷贝构造函数。
3.vector,string在内存中是连续的
2.要重新一个一个拷贝,拷贝vector用vector的拷贝构造函数。
3.vector,string在内存中是连续的
#4
1.可以
放心使用系统给你合成的拷贝构造函数
2.建议使用列表初始化,也可用=运算符……
3.vector指向的数据是连续的,但是memcpy不能用……
2.建议使用列表初始化,也可用=运算符……
3.vector指向的数据是连续的,但是memcpy不能用……
#5
如果都没用指针。。可以不写
默认的拷贝函数就是用memcpy
默认的拷贝函数就是用memcpy
#6
不好意思。。这边我说错了。。。默认的拷贝函数也不是用memcpy。。
#7
.