- 拷贝构造函数
传值传参时会先调用拷贝构造,拷贝构造的参数必须是引用 不然就会无限递归
- 1.拷贝构造函数是构造函数的一个重载形式
2.拷贝构造函数的参数只有一个且必须是类类型对象的引用,使用传值方式编译器直接报错,
因为会引发无穷递归调用
3.若未显式定义,编译器会生成默认的拷贝构造函数。 默认的拷贝构造函数对象按内存存储按字节序完成拷贝,这种拷贝叫做浅拷贝,或者值拷贝
注意:在编译器生成的默认拷贝构造函数中,内置类型是按照字节方式直接拷贝的,而自定
义类型是调用其拷贝构造函数完成拷贝的。
4. 编译器生成的默认拷贝构造函数已经可以完成字节序的值拷贝了,还需要自己显式实现吗?
当然像日期类这样的类是没必要的。那么下面的类呢?验证一下试试?
总结: 1、如果没有管理资源,一般去看不需要写拷贝构造,默认生成的拷贝构造就可以。如:Data
2、如果都只是自定义成员,内置类型成员没有指向资源也类似默认生成的拷贝构造就可以。如:MyQueu