您的位置:首页 > 其它

继承中构造函数和继承中的析构函数解析

2016-09-30 20:03 323 查看
类与类之间做常用的联系:组合和继承。

组合:将其他类的对象当作为现有类的成员来使用。

继承:类之间的父与子

子类拥有父类所有的属性和行为

子类就是特殊的父类

子类对象可以当做父类使用

子类中可以增加父类没有的属性和成员函数

子类对象的构造函数:

必须对继承而来的成员进行初始化:

(1)用初始化列表或者直接赋值进行初始化(当子类继承父类的私有成员时,由于子类不能直接访问父类的私有成员 private和protected区别),所以不能直接进行初始化,这时只可以通过父类的构造函数进行初始化);

(2)调用父类的构造函数初始化

父类构造函数如何在子类中调用:

(1)默认调用:

子类对象在创建的时候会自动调用父类的构造函数():

适用于无参构造函数和默认构造函数

(2)显示调用:

初始化列表里面调用;

例:

class Parent
{
public:
/*Parent()
{
cout << "Parent()" << endl;
}*/
Parent(string s)
{
cout << "Parent(string s) : " << s << endl;
}
};

class Child : public Parent
{
public:
Child()//隐式调用
{
cout << "Child()" << endl;
}
Child(string s) : Parent(s)//显式调用
{
cout << "Child(string s) : " << s << endl;
}
};

int main()
{
Child c;//这一行会调用子类的构造函数 ,在此之前需要调用父类的构造函数,且为无参父类构造函数或者默认参数的构造函数,如果没有会报错,将上面无参构造函数加入即可。
Child cc("cc");

return 0;
}


对象创建时构造函数规则:

1、调用父类的构造函数

2、调用成员变量的构造函数

3、子类的构造函数

析构函数的析构规则与此相反的
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐