继承中构造函数和继承中的析构函数解析
2016-09-30 20:03
323 查看
类与类之间做常用的联系:组合和继承。
组合:将其他类的对象当作为现有类的成员来使用。
继承:类之间的父与子
子类拥有父类所有的属性和行为
子类就是特殊的父类
子类对象可以当做父类使用
子类中可以增加父类没有的属性和成员函数
子类对象的构造函数:
必须对继承而来的成员进行初始化:
(1)用初始化列表或者直接赋值进行初始化(当子类继承父类的私有成员时,由于子类不能直接访问父类的私有成员 private和protected区别),所以不能直接进行初始化,这时只可以通过父类的构造函数进行初始化);
(2)调用父类的构造函数初始化
父类构造函数如何在子类中调用:
(1)默认调用:
子类对象在创建的时候会自动调用父类的构造函数():
适用于无参构造函数和默认构造函数
(2)显示调用:
初始化列表里面调用;
例:
对象创建时构造函数规则:
1、调用父类的构造函数
2、调用成员变量的构造函数
3、子类的构造函数
析构函数的析构规则与此相反的
组合:将其他类的对象当作为现有类的成员来使用。
继承:类之间的父与子
子类拥有父类所有的属性和行为
子类就是特殊的父类
子类对象可以当做父类使用
子类中可以增加父类没有的属性和成员函数
子类对象的构造函数:
必须对继承而来的成员进行初始化:
(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、子类的构造函数
析构函数的析构规则与此相反的
相关文章推荐
- 继承与派生3:派生类的构造函数与析构函数
- 多重继承中派生类的构造函数和析构函数
- 【c++继承】继承关系中派生类对象构造函数和析构函数调用顺序
- C++继承中析构函数 构造函数的调用顺序以及虚析构函数
- C++构造函数的执行顺序及析构函数的执行顺序-多种情况:普通继承、虚拟继承、类构造函数调用其它类的构造函数
- 继承和组合构造函数和析构函数的次序
- 理解构造函数、析构函数、赋值操作符函数不能被继承
- 非继承的 构造函数 与 析构函数
- C++在单继承、多继承、虚继承时,构造函数、复制构造函数、赋值操作符、析构函数的执行顺序和执行内容
- 知识点——派生类生成过程——单继承的构造函数和析构函数
- C++在单继承、多继承、虚继承时,构造函数、复制构造函数、赋值操作符、析构函数的执行顺序和执行内容
- 类继承中构造函数和析构函数的调用
- 继承中构造函数和析构函数地调用顺序
- 深度解析-->c++中构造函数,拷贝构造,赋值运算符重载,析构函数的调用情况
- 类继承时,构造函数和析构函数的调用次序
- 【C++】继承时构造函数和析构函数
- C++ 构造函数和析构函数的继承
- python---面向对象,class定义、构造函数、析构函数、基本继承
- 全局变量,继承,虚函数,构造函数和析构函数的调用过程
- 构造函数 析构函数 的继承与虚拟问题 & 虚函数 纯虚函数