c++拷贝构造函数 有自己定义拷贝构造函数的必要吗?

有自己定义拷贝构造函数的必要吗?1确实提供了一个复制构造函数,但此函数严格按位复制。一旦类中有动态分配成员,这将是一个问题(通常称为深度复制),这是不正确的2如果没有动态分配成员,这是不必要的。但是有

有自己定义拷贝构造函数的必要吗?

1确实提供了一个复制构造函数,但此函数严格按位复制。一旦类中有动态分配成员,这将是一个问题(通常称为深度复制),这是不正确的

2如果没有动态分配成员,这是不必要的。但是有动态分配成员是必要的,也需要完成赋值运算符和析构函数的重载,这样当有动态分配成员时就不会有内存泄漏

析构函数的自动调用(2)堆中的对象不会自动调用析构函数。析构函数调用delete后,它会主动调用析构函数

复制构造函数用于在未生成对象时构造另一个对象。

=赋值运算符重载用于在对象已存在时使用另一个对象构造对象。有必要判断它不是通过给自身赋值来构造的。同时判断部分构件不需要重新构造。