c++基础学习11-c++继承的构造和析构函数
2014-09-04 09:29
567 查看
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,同名成员通过作用域分辨符进行区分
相关文章推荐
- C++学习笔记_3:多继承时的类声明及构造和析构函数
- C++学习笔记4--静态属性 静态方法 虚方法 抽象方法 多态性 析构函数 运算符重载 多继承 虚继承
- 【C++学习笔记】继承与派生基础概念
- C++基础学习教程(七)----类编写及类的两个特性解析--->多态&继承
- C/C++学习笔记:基础知识11
- GeekBand学习笔记:C++三大函数:拷贝构造、拷贝赋值、析构函数
- C++学习笔记_2:单一继承时的构造函数与析构函数
- [MFC学习之C++基础] 孙鑫视频中第三讲中提到的小测试程序(关于基类和子类的继承关系)
- C++学习笔记:继承中的构造与析构
- C++学习笔记:3.3.4 继承和组合混搭情况下,构造和析构调用顺序
- c++超基础:继承的构造与析构(赋值兼容性原则)
- 嵌入式开发之C++基础学习笔记4--面向对象封装继承多态
- c++ 继承 + 构造、析构函数
- 【C++学习笔记】继承与派生基础概念
- C++ FAQ学习笔记 11 章 析构函数
- C\C++ 程序员从零开始学习Android - 个人学习笔记(八) - java基础 - 继承、抽象类、接口、内部类(待续)
- c++ 11学习笔记--右值引用和移动构造语义
- c++学习笔记4,调用派生类的顺序构造和析构函数(一个)
- C++学习-多继承和虚基类(11) http://blog.csdn.net/gzshun/article/details/7300458
- C++构造与析构(11) - 析构函数的行为