c++ 类的继承(一)
来源:互联网 发布:2k18欧文捏脸数据 编辑:程序博客网 时间:2024/06/10 12:34
一,基本概念
1.类的继承,指从已有的类那里继承一些特性。原有的类称为基类或父类,继承产生的类成为子类或派生类。
2.派生类的声明
class 派生类名:继承方式 基类名1, 继承方式 基类名2,...,继承方式 基类名n
{
派生类成员声明;
};
当存在多个基类时,称为多重继承,当仅有一个基类,称为单继承。3.继承方式分为三种,公有(public),私有(private),保护(protected)。
当继承方式为公有继承时,基类的公有成员和保护成员被继承到派生类中,而基类的私有成员在派生类中无法访问。另外,基类的公有成员和保护成员被继承后仍作为派生类的私公有成员和保护成员,也就是说派生类的所有成员都可以访问这些项,但都无法访问基类的私有成员。
当继承方式为私有继承时,基类的公有成员和保护成员都以私有成员的身份出现在派生类中,基类的私有成员在派生类中依旧不可访问。与公有继承的差别在于此时继承项变成了私有成员,因此无法在类外进行访问。
同样,保护继承是,基类的公有成员和保护成员以保护成员的形式出现在派生类中。
二,派生类的构造和析构函数
派生类的基类继承而来的成员的初始化工作还是还是由基类的构造函数完成,然后派生类中新增的成员在派生类的构造函数中初始化。
派生类构造函数的语法如下
派生类名::派生类名(参数总表):基类名1(参数表1),基类名(参数名2)....基类名n(参数名n),内嵌子对象1(参数表1),内嵌子对象2(参数表2)....内嵌子对象n(参数表n)
{
派生类新增成员的初始化语句;
}
注:构造函数的初始化顺序并不以上面的顺序进行,而是根据声明的顺序初始化。如果基类中没有不带参数的构造函数,那么在派生类的构造函数中必须调用基类构造函数。
派生类构造函数的执行次序
1)派生类构造函数先调用基类构造函数。
2)执行派生类构造函数本身。
同样,在派生类对象被释放时,先执行派生类析构函数,再执行其基类析构函数。
例子
#include#include using namespace std;class B1{public: B1(int i) { cout<<"constructing B1 "<
因为在C类的声明中,顺序为B2,B1,B3,因此先调用基类构造函数,顺序如前,之后调用内嵌成员对象的构造函数,调用顺序按照他们在类中的声明顺序,为B1,B2,B3。
析构函数与构造函数的顺序正好相反
#include#include using namespace std;class B1{public: B1(int i) { cout<<"constructing B1 "<
输出结果为:
constructing B2 2
constructing B1 1
constructing B3
constructing B1 3
constructing B2 4
constructing B3
destructing B3
destructing B2
destructing B1
destructing B3
destructing B1
destructing B2
阅读全文
0 0
- C++-类的继承
- 复习一:C的OOP-基本继承
- c++ 类的继承(一)
- python类的继承(一)
- 类的扩展(一):继承
- C#中类的继承
- C++: 类的继承派生
- C/C++:C++类的继承
- 简单的关于类的继承(一)
- 继承---派生类(C++)
- 每天一点积累(一五)--类继承的加载
- C++学习笔记---类的继承(一)
- 【C++温故】(2) 类的继承(一)
- javascript 的 继承(一) 之 原型链继承
- JavaScript继承实现(一)构造函数的继承
- C++继承(一) 常用的继承方式
- C语言面向对象编程(一):封装与继承
- C语言面向对象编程(一):封装与继承
- springboot集成Redis
- Android模拟器识别技术
- python生成ios固定代码模块脚本(仅供参考)
- 本体融合之添加空间方向关系
- (1)DOM概述、DHTML概述、window对象常用对象
- c++ 类的继承(一)
- FZU-1759 Super A^B mod C
- 简单实现Android倒计时功能
- 可以转码的字符流
- 深入理解 TTL 与 CMOS 异同
- muduo 日志库学习(一)
- Halcon12 HObject与VC++ OpenCV Mat相互转换
- QT服务器与客户端的搭建
- ES05--search guard安装与配置