程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> C++ >> C++入門知識 >> 第17章 用於大型程序的工具(13)

第17章 用於大型程序的工具(13)

編輯:C++入門知識

17.3 多重繼承與虛繼承

多重繼承(multiple inheritance)可以更直接地為應用程序建模。多重繼承是從多於一個直接基類派生類的能力,多重繼承的派生類繼承其所有父類的屬性。

17.3.1 多重繼承

1. 定義多個類

派生類為每個基類(顯式或隱式地)指定了訪問級別——public、protected或private。像單繼承一樣,只有在定義之後,類才可以用作多重繼承的基類。對於類可以繼承的基類的數目,沒有語言強加的限制,但在一個給定派生列表中,一個基類只能出現一次。

class ZooAnimal{}; 
class Endangered{}; 
class Bear:public ZooAnimal{}; 
class Panda:public Bear,public Endangered{}; 
  class ZooAnimal{};
  class Endangered{};
  class Bear:public ZooAnimal{};
  class Panda:public Bear,public Endangered{};2. 多重繼承的派生類從每個基類中繼承狀態

在多重繼承下,派生類的對象包含每個基類的基類子對象。

3. 派生類構造函數初始化所有基類

構造派生類型的對象包括構造和初始化它的所有基類子對象。

namespace Andersoft 

    namespace Animal 
    { 
        class ZooAnimal{}; 
        class Endangered{}; 
        class Bear:public ZooAnimal{}; 
        class Panda:public Bear,public Endangered{ 
        public: 
            Panda():Bear(),Endangered(){} 
        }; 
    } 

namespace Andersoft
{
 namespace Animal
 {
  class ZooAnimal{};
  class Endangered{};
  class Bear:public ZooAnimal{};
  class Panda:public Bear,public Endangered{
  public:
   Panda():Bear(),Endangered(){}
  };
 }
}
4. 構造的次序

構造函數初始化式只能控制用於初始化基類的值,不能控制基類的構造次序。基類構造函數按照基類構造函數在類派生列表中的出現次序調用。

構造函數調用次序不受構造函數初始化列表中出現的基類的影響,也不受基類在構造函數初始化列表中的出現次序的影響。

5. 析構的次序

總是按照構造函數運行的逆序調用析構函數。

摘自 xufei96的專欄
 

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved