继承再剖析
来源:互联网 发布:淘宝联盟导出excel后 编辑:程序博客网 时间:2024/06/08 23:31
上节我们初步认识了C++中的继承特性,了解了关于继承的基础知识和基本概念,今天我们就来更深层次的探究吧。
我们知道,在类中,不仅有类的成员变量,更重要的是有类的对外接口——成员函数。在类的成员函数中,有六大成员函数至关重要,下面我们就来看在继承下基类和派生类的成员函数的情况。
(1)派生类的默认成员函数
在继承关系里面,若没有显示给出这六大成员函数,系统会合成默认的成员函数。
(2)基类和派生类的构造函数的关系
1.基类没有定义带参数(没有缺省值)的构造函数,派生类构造函数可有可无。
2.基类有带参数的构造函数,派生类构造函数必须给出。
3.基类有带默认值参数的构造函数,派生类会自动合成一个构造函数。
(3)继承关系中构造函数的调用过程
派生类对象——调用派生类构造函数(初始化列表)——调用基类的构造函数——初始化自己的成员——执行派生类构造函数函数体
(4)继承关系中析构函数的调用过程
派生类对象——调用派生类析构函数处理自己特有的成员——执行函数体——调用基类的析构函数
(6)派生类对象模型
(7)继承体系中的作用域
1.派生类对象,优先访问派生类的成员变量,与成员变量的类型无关,若要访问基类的成员,需要加上域作用符,例如对象d调用基类B的成员变量_b,即d.B::_b;
2.派生类对象,优先调用派生类的成员函数,与成员函数的返回类型无关,若要访问基类的成员函数,需要加上域作用符。
注意:如果派生类成员函数与基类的成员函数同名,则会产生同名隐藏现象。同名隐藏需要具备三个条件,一是在继承体系中,二是和变量的类型无关,三是与函数参数列表无关,返回类型无关。
3.处于不同的作用域,所以不能构成重载函数。
(8)赋值兼容规则
1.子类对象可以赋值给父类对象 ,反之不可以。
2.父类对象的指针或者引用可以指向子类对象,反之不可以。
(9)友元关系与继承
1.友元关系不能继承,,也就是说基类友元不能访问子类私有和保护成员。
2.静态变量成员可以继承,但是只能共有一份。基类定义了static成员,则整个继承体系里面只有一个这样的成员。无论派生出多少个子类,都只有一个static成员实例。
- 继承再剖析
- 虚拟继承内存剖析
- 组合式继承深度剖析
- 虚拟继承剖析
- java之继承剖析
- 深度剖析虚拟继承
- 菱形继承与菱形虚继承剖析
- 深入剖析C#继承机制
- 深入剖析C#继承机制
- 深入剖析C#继承机制
- 深入剖析Javascript之继承
- 深入剖析C#继承机制
- 深入剖析JavaScript中的继承
- JavaSE第十七讲:继承剖析
- C++类的继承剖析
- 深度剖析c++菱形继承!
- 深入剖析C#继承机制1
- 深入剖析C#继承机制2
- CentOS常用命令
- 树的遍历
- 3.基础类
- 【Spring】共性问题(九)
- 关于迷宫求解及其最优解的问题
- 继承再剖析
- POJ 3690 Constellations 笔记
- c++重载、覆盖、隐藏,重点隐藏的问题
- Ansible安装
- hibernate 实体的3种状态
- Learning Techniques
- 权值矩阵
- 【Spring】代理模式(十)
- c++多态