C++中,复制构造函数主要有三个作用:用类的一个对象初始化另一个对象、函数的形参和实参结合、函数返回对象。在继承时,子类的复制构造函数语法如下:
子类::子类(const 子类 &子类引用名):父类1(子类引用名),父类2(子类引用名)...
其中,“父类n”表示子类所继承的父类,所有的父类都使用“子类引用”作为父类复制构造函数的参数。因为,根据“类型兼容规则”有“子类对象可以隐含的转换为父类引用”。
例子:
下面的例子中,类X和类Y都有自己的复制构造函数,类Point继承了X和Y,Point的复制构造函数用于自身复制,并将引用传递给其父类:
class X {
public:
X() {};
X(const X &ref) {
printf("copy X!!! n"); }
};
class Y {
public:
Y() {};
Y(const Y &ref) {
printf("copy Y!!! n"); }
};
class Point: public X, public Y {