首页  >  文章  >  后端开发  >  c++复习要点总结之九——继承二

c++复习要点总结之九——继承二

黄舟
黄舟原创
2017-01-16 11:47:051069浏览

一 继承中的同名成员变量处理方法

1、当子类成员变量与父类成员变量同名时

2、子类依然从父类继承同名成员

3、在子类中通过作用域分辨符::进行同名成员区分(在派生类中使用基类的同名成员,显式地使用类名限定符)

4、同名成员存储在内存中的不同位置

51.png

52.png

二. 派生类中的static关键字

继承和static关键字在一起会产生什么现象哪?

理论知识

Ø 基类定义的静态成员,将被所有派生类共享

Ø 根据静态成员自身的访问特性和派生类的继承方式,在类层次体系中具有不同的访问性质 (遵守派生类的访问控制)

Ø 派生类中访问静态成员,用以下形式显式说明:

类名 :: 成员

或通过对象访问 对象名 . 成员

53.png

54.png

55.png

总结:

1> static函数也遵守3个访问原则

2> static易犯错误(不但要初始化,更重要的显示的告诉编译器分配内存)

3> 构造函数默认为private

多继承概念 

Ø 一个类有多个直接基类的继承关系称为多继承

Ø 多继承声明语法

class 派生类名 : 访问控制 基类名1 , 访问控制 基类名2 , … , 访问控制 基类名n

{

数据成员和成员函数声明

};

Ø 类 C 可以根据访问控制同时继承类 A 和类B 的成员,并添加

自己的成员

56.png

多继承的派生类构造和访问 

Ø 多个基类的派生类构造函数可以用初始式调用基类构造函数初始化数据成员

Ø 执行顺序与单继承构造函数情况类似。多个直接基类构造函数执行顺序取决于定义派生类时指定的各个继承基类的顺序。

Ø 一个派生类对象拥有多个直接或间接基类的成员。不同名成员访问不会出现二义性。如果不同的基类有同名成员,派生类对象访问时应该加以识别。

57.png

58.png

二 虚继承

如果一个派生类从多个基类派生,而这些基类又有一个共同的基类,则在对该基类中声明的名字进行访问时,可能产生二义性

59.png

分析:

60.png

总结:

Ø 如果一个派生类从多个基类派生,而这些基类又有一个共同

的基类,则在对该基类中声明的名字进行访问时,可能产生

二义性

Ø 如果在多条继承路径上有一个公共的基类,那么在继承路径的某处

汇合点,这个公共基类就会在派生类的对象中产生多个基类子对象

Ø 要使这个公共基类在派生类中只产生一个子对象,必须对这个基类

声明为虚继承,使这个基类成为虚基类。

Ø 虚继承声明使用关键字 virtual

61.png

62.png

实验:注意增加virtual关键字后,构造函数调用的次数。

三 继承总结

Ø 继承是面向对象程序设计实现软件重用的重要方法。程序员可以在已有基类的基础上定义新的派生类。

Ø 单继承的派生类只有一个基类。多继承的派生类有多个基类。

Ø 派生类对基类成员的访问由继承方式和成员性质决定。

Ø 创建派生类对象时,先调用基类构造函数初始化派生类中的基类成员。调用析构函数的次序和调用构造函数的次序相反。

Ø C++提供虚继承机制,防止类继承关系中成员访问的二义性。

Ø 多继承提供了软件重用的强大功能,也增加了程序的复杂性。

以上就是c++复习要点总结之九——继承二的内容,更多相关内容请关注PHP中文网(www.php.cn)!


声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn