您的位置:首页 > 编程语言 > C语言/C++

c++中子类的继承和调用父类构造函数的方法——学习c++笔记

2015-01-19 22:34 856 查看
在继承中与其他成员不同,构造方法不能被子类继承。在创建子类对象时,为了初始化从父类继承来的成员,需要调用父类的构造方法。
if(子类没有自定义构造函数){
if(基类没有自定义构造函数){
用子类定义对象时,先自动调用基类的默认构造函数,再调子类的默认构造函数。
} else if(基类有自定义无参构造函数){
用子类定义对象时,先自动调用基类的自定义无参构造函数,再调子类的默认构造函数。
}else {
用子类定义对象时,编译提示没有默认构造函数可用
}
}else if(子类自定义构造函数但没有调用基类的某个构造函数){
if(基类没有自定义构造函数){
用子类定义对象时,先自动调用基类的默认构造函数,再调子类的自定义构造函数。
}else if(基类有自定义无参构造函数){
用子类定义对象时,先自动调用基类的自定义无参构造函数,再调子类的自定义构造函数。
}else {
用子类定义对象时,编译提示没有默认构造函数可用
}
}

两处else中,即基类有自定义含参构造函数,需要初始化父类成员,方式是在子类构造函数之后添加冒号,然后加上父类的含参构造函数。

#include <iostream>
using namespace std;
class Parent
{
public:
Parent(const char* s)//基类有自定义含参构造函数
{
cout<<"Parent()"<<" "<<s<<endl;
}

~Parent()
{
cout<<"~Parent()"<<endl;
}
};

class Child : public Parent
{
public:
Child() : Parent("Parameter from Child!")//子类构造函数之后添加冒号,然后加上父类的含参构造函数
{
cout<<"Child()"<<endl;
}

~Child()
{
cout<<"~Child()"<<endl;
}
};

运行结果如下:

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