拷贝构造函数是一种特殊的构造函数,
唯一的参数是本类型的一个引用变量。
构造函数名(const 构造函数名 & c)
{
age = c. age;
}
当用一个已经初始化过了的自定义类型对象去初始化另外一个新构造的对象的
时候,拷贝构造函数就会被自动调用。
1.一个对象以值传递的方式传入函数体
2.一个对象需要通过另外一个对象进行初始化
3.一个对象以值传递的方式从函数返回
如果在类中没有显示的声明一个拷贝构造函数,那么编译器会自动生成
一个默认的拷贝构造函数,即位拷贝,也叫浅拷贝。
自定义拷贝构造函数是一种良好的编程风格,可以阻止编译器形成默认
的拷贝构造函数。
=====深拷贝与浅拷贝=====
如果类内成员变量需要动态开辟堆内存,此时如果实行浅拷贝,就是把
对象里的值完全复制给另一个对象,那么新对象的堆内存变量也同时
指向旧对象的堆成员变量,即两个指针指向同一块内存区域。当释放其中一个
指针的内存时候,另一个指针就成为了野指针。
网友评论