c++中子类的继承和调用父类构造函数的方法——学习c++笔记
2015-01-19 22:34
856 查看
在继承中与其他成员不同,构造方法不能被子类继承。在创建子类对象时,为了初始化从父类继承来的成员,需要调用父类的构造方法。
两处else中,即基类有自定义含参构造函数,需要初始化父类成员,方式是在子类构造函数之后添加冒号,然后加上父类的含参构造函数。
运行结果如下:
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; } };
运行结果如下:
相关文章推荐
- c++学习笔记5,多重继承中派生类的构造函数与析构函数的调用顺序(二)
- C++学习笔记(7)——多基类继承的构造函数的调用
- C++学习笔记16-2 编译器对构造函数的调用处理
- 继承父类,调用父类中的方法 分类: python 小练习 python基础学习 2014-01-10 17:54 325人阅读 评论(0) 收藏
- 学习笔记——继承中子父类变量,函数,构造函数的特点
- Python学习笔记--子类调用父类方法
- C++学习笔记-----不要在构造函数和析构函数中调用虚函数
- C++学习笔记4--静态属性 静态方法 虚方法 抽象方法 多态性 析构函数 运算符重载 多继承 虚继承
- 所有的页面都继承自定义的BasePage,而有一个特殊页面要继承BasePage,但不想执行父类构造函数调用的某些方法,怎么办?
- JS学习笔记——JavaScript继承的6种方法(原型链、借用构造函数、组合、原型式、寄生式、寄生组合式)
- c++学习笔记4,派生类的构造函数与析构函数的调用顺序(一)
- C++学习笔记之继承层次中的函数调用。
- 继承、虚方法、重写。隐藏方法,调用父类的方法和父类的构造函数
- C++学习笔记51——在构造函数和析构函数中调用虚函数
- C++学习笔记_2:单一继承时的构造函数与析构函数
- C++学习笔记48——继承中的构造函数
- [c++笔记] 调用父类带参的构造函数
- C++学习笔记(5)——基类、派生类的构造函数、析构函数的调用顺序
- C++学习笔记(6)——多重继承类对象的构造函数参数的传递方法
- C++学习笔记:3.3.4 继承和组合混搭情况下,构造和析构调用顺序