程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> C++ >> C++入門知識 >> C++ 虛基類簡單使用

C++ 虛基類簡單使用

編輯:C++入門知識

1、概述          虛基類是用關鍵字virtual聲明繼承的父類,即便該基類在多條鏈路上被一個子類繼承,但是該子類中只包含一個該虛基類的備份,這也是虛基類的作用所在。          正是由於虛基類的這個作用,所以在每個子類的構造函數中必須顯示的調用該虛基類的構造函數,不管該虛基類是不是直接的父類。          其次,虛基類的構造函數的調用早於其他非虛基類的構造函數的調用。          上面兩點就是虛基類的特性。       2、代碼示例          我們來看一段簡單的代碼,體現虛基類的這兩個特性。     [cpp]   #include <iostream>   #include <cstdio>   using namespace std;      class Base   {   public :       int base;       Base(int a = 0)       {           this->base = a;           cout<<"Base Constructer "<<a<<endl;       }   };      class A : public virtual Base   {   public :       int a;       A(int a, int b):a(a), Base(b)       {           cout<<"A Constructer"<<endl;       }   };      class B : public virtual Base   {   public :       int b;       B(int a, int b) : b(a), Base(b)       {           cout<<"B Constructer"<<endl;       }   };      class C : public B, public A, public virtual Base   {   public :       int c;       C(int a, int b, int c, int d, int e) : A(a, b), B(c, d), Base(e)       {           cout<<"C Constructer"<<endl;       }   };      int main()   {       C c(1, 2, 3, 4, 5);       return 0;   }      程序運行結果:            我們看到最後一個子類C顯式的調用了虛基類的構造函數,這個是必須的。          然後就是雖然虛基類在最後一個聲明,但是Base的構造函數最先被調用,而且只被調用了一次,說明子類中只包含了一個該基類的復本。          虛基類的特性就從這段代碼的運行結果中一目了然了。

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