C ++ - 仮想継承(曖昧さにつながることができ、使用しないでください)

 派生クラスの名前が複数の基底クラスから派生して、これらの基本クラスは、共通の基本クラスを持っている場合は訪問が生み出す可能性がある場合、基本クラスで宣言されている曖昧さを

要約:

  •   派生クラスは、共通の基本クラスを持つ複数の基底クラスから派生した場合

     基底クラス、アクセスベースクラス内で宣言名は、有していてもよいです

     あいまいな

  •   多重継承パス上の共通の基底クラスは、継承経路のどこかで、その後がある場合

     合流は、共通のベース・クラスは、オブジェクトの基底クラスの派生クラスでサブ複数のオブジェクトを有することになります

  •   派生クラスでのみ生成され、この共通の基底クラスのサブオブジェクトを作るために、基本クラスが必要

     宣言された仮想継承は、基底クラスは、仮想基底クラスになります。

  •   キーワード仮想仮想継承文を使用します

 

書式#include <iostreamの>
 使用して 名前空間はstdを、

クラスB 
{ 
パブリックint型のB;
保護プライベート

}; 

クラス B1:仮想 パブリックB 
{ 
パブリックint型B1。

}。

クラス B2:仮想  パブリックB 
{ 
パブリックint型B2。
}。

クラス C:公共 B1、公共B2 
{ 
パブリックINTC; 
}; 

ボイドメイン()
{ 

    C C1、
    c1.b1 = 100 ; 
    c1.b2 = 200である
    c1.c = 300 ; 

    c1.b = 500 ; // 継承仮想継承と曖昧溶液
     // :: B = 500 c1.B1;
     // c1.B2 :: B = 500; 

    
    COUT << " もしもし... " << てendl; 
    システム(" PAUSE " );
     リターン; 
}

 

おすすめ

転載: www.cnblogs.com/long5683/p/11402194.html