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

来源:互联网 发布:建筑外观效果图软件 编辑:程序博客网 时间:2024/06/05 03:12

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

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

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

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

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






二. 派生类中的static关键字

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

理论知识

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

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

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

                            类名 :: 成员

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






总结:

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

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

3> 构造函数默认为private



多继承概念

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

Ø    多继承声明语法

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

    {

         数据成员和成员函数声明

    };

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

     自己的成员


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

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

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

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




二 虚继承

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


分析:


总结:

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

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

     二义性

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

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

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

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

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



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



三 继承总结

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

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

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

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

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

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






0 0
原创粉丝点击