类的继承和派生

来源:互联网 发布:知乎新西兰玉石 编辑:程序博客网 时间:2024/05/16 10:00

继承的概念:

       C++中一个类可以从另一个类中继承特征(属性和方法),其中被继承的类称为基类或者父类,从基类继承得到的类称为派生类或者子类。派生类

还可以继续派生,成为其子类的父类。形成树状的继承体系。

     语法:class <派生类名>:<继承访问控制><基类名>

class Drived:public Base{     ...}

     派生类自动拥有其父类对象的全部数据成员和成员函数,派生类只需要定义其与基类行为不同或者需要扩展的数据成员或成员函数。

继承访问控制方式(说明如何继承基类,用来改变基类成员的访问级别):

     继承访问控制方式有三种:

        public ,公有继承

        protected,保护继承(将基类的公有成员调整为保护成员)

        private,私有继承(将基类的公有成员和保护成员调整为私有成员)

派生类对象的内存布局:

        派生类对象由其基类子对象和派生类的所有非晶态数据成员(派生部分)组成。

        派生类对象占用的内存的大小应该由基类子对象占用内存的大小和派生部分的大小共同决定。

        派生类对象的内存布局总是基类子对象的数据成员在前,派生部分的数据成员在后。

公有继承-成员隐藏:

         当派生类中的某个成员名与基类类成员名相同时,派生类成员会隐藏基类成员。为了访问被隐藏的基类成员,需要使用类作用域限定符。

        同名的基类成员函数和派生类成员函数不能构成重载函数集。也就是说,如果派生类中定义的成员函数与基类中的成员函数同名,那么基类中的成员函数将全部被隐藏。(因为两个函数位于不同的作用域中)

派生类的构造函数:

       当构造/析构一个派生类D的对象时,在D的派生层次上的每一层构造/析构函数都将被调用,从而保证D的对象中的每个基类子对象都能够正确初始化。

       当构造一个派生类对象时,构造函数调用顺序为:

       1.基类的构造函数

       2.派生类中每个成员对象的构造函数

       3.派生类自身的构造函数

      析构函数的顺序正好相反。当析构一个类对象时,析构函数调用顺序为:

       1.派生类自身的析构函数

       2.派生类中每个成员对象的构造函数

       3.基类的析构函数


原创粉丝点击