构造函数的参数为自身类的引用时。拷贝构造函数的功能是用一个已有对象初始化一个正在建立的同类对象。
拷贝构造函数的特点如下
(1)该函数名与类同名,因为它也是一种构造函数,并且该函数也不被指定返回类型;
(2)该函数只有一个参数,并且是对某个对象的引用;
(3)每个类都必须有一个拷贝构造函数;
(4)如果程序员没有显式地定义一个拷贝构造函数,那么,C++编译器会自动生成一个缺省的拷贝构造函数.
(5)拷贝构造函数的目的是建立一个新的对象实体,所以,一定要保有证新创建的对象有着独立的内存空间,而不是与先前的对象共用。
在定义一些类时,有时需要(而且强立推荐)显式地定义拷贝构造函数。
拷贝构造函数什么时候起作用
1)用已有对象初始化创建对象。
2)当对象作函数参数时,因为要用实参初始化形参,也要调用拷贝构造函数。
3)函数返回值为类类型时,情况也类似。
赋值函数
1) 赋值操作符则给对象一个新的值,既然是新的值,说明这个对象原来就有值,这也说明,赋值函数只能被已经存在了的对象调用。
2) 如果不主动编写拷贝构造函数和赋值函数,编译器将以“位拷贝”的方式自动生成缺省的函数。倘若类中含有指针变量,那么这两个缺省的函数就隐含了错误。