对象的复制
C++中自带有一个复制构造函数,即:
MyClass test1;
MyClass test2 ( test1 );
此时,test2对象会复制test1来进行初始化,该自带的构造函数为MyClass ( MyClass & ) // 注意参数的引用是必须的
C++中复制对象有几种方法:
- MyClass test2 ( test1 ); //即声明时使用复制构造函数
- test2 = test1 //直接赋值,亲测可用,而且test2不会变成test1的引用,两个对象在之后的使用中完全无联系(除了浅复制过去的指针)
- 。。
【注意】
- 复制时,对象中的指针型属性值也会复制,从而造成两个对象中的指针指向同一个地址,即浅复制
- 要想复制时,不导致新对象中的指针和引用还指向愿对象的内存空间,需要使用深复制,即,自定义复制构造函数 MyClass ( MyClass & ),对新变量重新申请内存空间,然后用原对象中的数据赋值
【PS】要和java区别开,java的对象名是具有引用效果的,比如参数传递