c++远征之继承篇

来源:互联网 发布:c 游戏编程教程 编辑:程序博客网 时间:2024/04/29 02:13

一、继承
继承 子类是父类的子集 派生类——基类 = 子类——父类

继承 :创建时-》先构造基类再派生类 对象消亡时-》先析构派生类再析构基类

几种继承方式区别:
公有继承
保护继承
私有继承
无法直接访问protected、private,只能访问public

二、隐藏和覆盖
覆盖是指派生类函数覆盖基类函数,特征是:
(1)不同的范围(分别位于派生类与基类) ;
(2)函数名字相同;
(3)参数相同;
(4)基类函数必须有 virtual 关键字。

隐藏”是指派生类的函数屏蔽了与其同名的基类函数,具体规则:
如果派生类的函数与基类的函数同名,但是参数不同。此时,若基类无virtual关键字,基类的函数将被隐藏。(注意别与重载混淆,虽然函数名相同参数不同应称之为重载,但这里不能理解为重载,因为派生类和基类不在同一名字空间作用域内。这里理解为隐藏)

若隐藏可以使用 派生类对象.基类::基类成员函数 来访问

大类只能去包含小类,即小类赋值给大类,而不能大类赋值给小类
c++概念:隐形眼镜也是眼镜 关系IS-a,这是非常重要的
父类赋值
因为子类中肯定有父类的成员变量或函数,将子类去初始化父类时,相同部分赋值,不同部分截断。反过来不行,因为子类中比父类多的部分就无法初始化,会造成内存泄漏。

三、多继承和多重继承

四、虚继承
多重继承错误
如果像图片一样的情况,可能会遇到继承是同个父类,在子类中具有相同的父类,会造成系统冗余。这就需要使用虚继承(只能指向相同的父类)。
不过虚继承作为底层的父类不能进行值的传递,只使用初始化的父类,默认的参数

0 0
原创粉丝点击