C++之继承与派生类

来源:互联网 发布:手机画板软件免费版 编辑:程序博客网 时间:2024/05/29 15:03

一、什么是继承

    继承机制是面向对象程序设计使代码可以复用的最重要手段,它允许程序员在保持原有类特性的基础上进行扩展,增加功能。这样产生新的类,称派生类。继承呈现了面向对象程序设计的层次结构,体现了有简单到复杂的认知过程。


二、

     C++中所谓的“继承”就是在一个已存在的类的基础上建立一个新的类。已存在的类(例如“马”)称为“基类”或“父类”。新建立的类(例如“公马”)称为“派生类”或“子类”。(如下图)

                           

1.继承定义格式:

      

当不写继承权限时默认为私有(public)继承


2.继承的代码形式:

#include<iostream>using namespace std;class Base         //基类{public:int _b;protected:int _b1;private:int _b2;};class Derived :public Base           //派生类{public:int _d;};int main(){cout << sizeof(Base) << endl;     //12 基类所占字节cout << sizeof(Derived) << endl;  //16 派生类所占字节system("pause");return 0;}

三、继承后各成员在派生类中的访问权限:

         

public继承:

    


protected继承

          


private继承

       

四、单继承、多继承、菱形继承

(1)单继承

class Base{public:int _b;};class D :public Base{public:int _d;};
(2)多继承

class Base1{public:int _b;};class B2{public:int _b2;};class D :public Base1,public B2{public:int _d;};

(3)菱形继承:

                        

class B{public:int _b;};class C1 :public B{public:int _c1;};class C2 :public B{public:int _c2;};class D :public C1, public C2{public:int _d;};

(4)对象模型:

            

五、派生类的对象构造顺序

class Base1{public:Base1(){};public:int _b;};class D :public Base1{public:D(){};public:int _d;};int main(){D d;}

上面的代码创建了一个 D 类型对象d

1.执行顺序为: 派生类构造函数---->初始化类表---->完成基类对象构造(调基类构造函数)---->调派生类构造函数

2.析构的执行顺序

        先析构派生类对象---->析构基类对象


注:

     1.基类没有定义带参数(没有缺省值)的构造函数-----派生类构造函数可定义也可不用定义。

     2.基类有带参数(没有缺省)的构造函数-------派生类一定要给出自己的构造函数

     3.基类定义缺省的构造函数-------派生类中系统合成构造函数







原创粉丝点击