3.5.4 拷贝构造函数

2013-10-07 15:32:39 · 作者: · 浏览: 76

3.5.4   拷贝构造函数

到目前为止,我们已将构造函数分成了两组:默认构造函数和带参数构造函数。前者的调用不带参数,后者的调用需要参数。在带参构造函数中,有两类很重要的构造函数,为强调其重要性,它们各自拥有一个特殊的名称:拷贝构造函数(copy constructor)和转型构造函数(convert constructor)。本小节讨论拷贝构造函数,转型构造函数将在3.5.7小节讨论。

拷贝构造函数创建一个新的对象,此对象是另外一个对象的拷贝品。拷贝构造函数有两种原型:

 
两种原型的参数类型都是引用,因此原型
 

是错误的。

拷贝构造函数可以有多于一个的参数,但是第一个以后的所有参数都必须有默认值。例如,原型

 

也声明了一个拷贝构造函数。

如果类的设计者不提供拷贝构造函数,编译器会自动生成一个。编译器生成的这个拷贝构造函数版本完成这样的操作:将源对象所有数据成员的值逐一赋值给目标对象相应的数据成员。

例3-25

 
本例列举了拷贝构造函数的使用方法。假定使用的是编译器生成的拷贝构造函数,尽管对象orig和clone拥有不同的存储空间,它们相应的数据成员具有相同的值。