您的位置:首页 > 其它

编写继承类的复制构造函数和构造函数

2016-03-14 21:55 399 查看
当基类存在私有成员时,应该如何编写继承类的复制构造函数呢?

方法是在复制构造函数的初始化成员列表中调用基类的复制构造函数。

class Base{
private:
int i;
public:
Base(int _i) :i(_i){}
};

class Derived:public Base{
public:
Derived() :Base(0), j(0){}
Derived(const Derived &obj) :Base(obj), j(obj.j){}
private:
int j;
};


当基类不存在默认构造函数时,继承类构造函数必须显式调用基类构造函数,否则会调用基类的默认构造函数,最终会出现“找不到构造方法”的编译错误。

如下是错误的:

class Base{
private:
int i;
public:
Base(int _i) :i(_i){}
};

class Derived :public Base{
public:
Derived(int x,int y) :j(y){}  //错误
Derived(const Derived &obj) :Base(obj), j(obj.j){}
private:
int j;
};
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: