c++基础学习11-c++继承的构造和析构函数
来源:互联网 发布:企业网络架构方案ppt 编辑:程序博客网 时间:2024/06/07 08:23
1,赋值兼容性
1,子类对象可以当做父类对象使用
2,子类对象可以直接赋值给父类对象
3,子类对象可以直接初始化父类对象
4,父类指针可以直接指向子类对象
5,父类引用可以直接引用子类对象
看下面一段代码
#include <cstdlib>#include <iostream>using namespace std;class Parent{ protected: const char* name; public: Parent() { name = "Parent"; } void Print() { cout<<"Name:"<<name<<endl; }};class Child : public Parent{ protected: int i; public: Child(int i) { this->name = "Child"; this->i = i; }};int main(int argc, char *argv[]){ Child c(1000); Parent p = c; Parent* pp = &c; Parent& rp = c; p.Print(); pp->Print(); rp.Print(); return EXIT_SUCCESS;}
2,继承对象模型
类在c++编译器内部可以理解为结构体
子类是由父类成员叠加子类新成员得到的
3,继承与构造
在子类对象构造的时候需要调用父类构造函数对其继承得来的成员进行初始化
4,继承与析构
在子类对象析构的时候需要调用父类的析构函数对其继承得来的成员进行处理
这个例子验证了上面所说的。
5,继承的构造与析构
1,子类对象在创建时会首先调用父类的构造函数
2,父类构造函数执行结束后,执行子类的构造函数
3,当父类的构造函数有参数时,需要在子类的初始化列表中显示调用,析构函数调用的先后顺序与构造函数相反。
6,继承与组合的混搭
1,类中的成员变量可以是其它类的对象
例:
上面的例子说明了,如果一个类继承自父类并且有其它的对象作为成员,构造函数调用的先后顺序、
7,同名成员变量
当子类中定义的成员变量与父类中的成员变量同名时会发生什么?
当子类成员变量与父类成员变量同名时
1,子类依然从父类继承同名成员
2,在子类中通过作用域分别符::进行同名成员区分
3,同名成员存储在内存中的不同位置
例:
8,总结
1,子类对象可以当做父类对象使用。
2,子类对象在创建时需要调用父类的构造函数进行初始化。
3,子类对象在销毁时需要调用父类析构函数进行清理。
4,先执行父类构造函数,在执行成员构造函数。
5,在继承中析构的顺序与构造顺序对称相反。
6,同名成员通过作用域分辨符进行区分
0 0
- C++-继承:构造函数和析构函数
- c++基础学习11-c++继承的构造和析构函数
- [c++]容器类。继承类的构造和析构
- 学习C++——构造函数和析构函数
- C/C++学习笔记:String类的构造函数、析构函数和赋值函数
- C/C++——构造函数、复制构造函数和析构函数的执行时刻
- 构造函数和析构函数【c++】
- [c++]构造函数和析构函数
- 【C#】构造函数和析构函数
- 【C++】构造函数和析构函数
- 【C++】构造函数和析构函数
- C++:构造函数和析构函数
- 初识c#---继承和继承关系中的构造函数
- 【C++】学习笔记四十七——类的构造函数和析构函数
- [c++]派生类的构造函数和析构函数
- C++:类的构造函数和析构函数
- c++---派生类的构造函数和析构函数
- 基础备忘:多重继承的构造函数和析构函数
- java各种排序算法
- 掌握单页网站设计的5大技巧
- ANDROID内存优化(大汇总——中)
- 快排
- js中判断路径是否有效
- c++基础学习11-c++继承的构造和析构函数
- 我的网址收藏-更新日期(2014-09-04)
- 鼠标按住后拖动StringGrid
- 如何在一个Spring工程下使用多数据源配置的改进实现
- 分解质因数问题
- 我的内核学习之路
- vim水平摆放所有窗口的三个方法
- 交叉验证 交叉熵 互信息
- 汇编cmp比较指令详解