类的继承特性是C++一个非常重要的机制。继承特性可使一个新类获得其父类的操作和数据结构,程序员只需在新类中增加原有类中没有的成分。

子类只能继承父类的protected和public。

派生类的三种继承方式

1.公有继承方式(public)

派生类的对象可访问基类中的公有成员,派生类的成员函数可访问基类中的公有成员和保护成员。

2.私有继承方式(private)

基类的成员只能由直接派生类访问,而无法再往下继承。

3.保护继承方式(protected)

基类的成员也只能由直接派生类访问,而无法再往下继承。

C++支持多重继承,即一个类从多个基类派生而来的能力。

虚拟继承是多重继承中特有的概念,如类D继承自类B和C,B和C都继承自A,则会出现如下图所示情况:

在类D中会两次出现A,为了节省内存空间,可将B、C对A的继承定义为虚拟继承,而A就成了虚拟基类,最后形成如下图所示情况:

多重继承的优点和缺陷

1.大多数系统的类层次往往有一个公共的基类,这样的结构如果使用多重继承,容易出现菱形继承,使得类的访问结构非常复杂,但可以用virtual继承及Loki库中的多继承框架来掩盖这些复杂性。

2.多重继承本身并不复杂,对象布局也不混乱,语言中都有明确的定义,真正复杂的是使用了运行时多态(virtual)的多重继承(语言对于多态的实现没有明确的定义)。

 

就近调用:如果父辈存在相关接口则优先调用父辈接口,如果父辈也不存在相关接口则调用祖父辈接口。

C++中如何阻止一个类被实例化:使用抽象类,或者构造函数被声明成private。

一般在何时构造函数被声明成private:比如要阻止编译器生成默认的copy constructor的时候。

什么时候编译器会生成默认的copy constructor:只要自己没写,而程序中需要的时候。

 

posted on 2016-11-11 09:50  嘀嘀嘎嘎唔  阅读(153)  评论(0编辑  收藏  举报