対象の仮想機能を理解するための機構(多型)

対象の仮想関数(多型)(抜粋)を理解するための機構

次のプログラム出力

クラスベース{
     パブリック
    ベース(INTのJ)、I(J){}
     仮想ベース(){}
     ボイド関数func1(){ 
        iは = * 10 
        関数func2(); 
    } 
    int型のgetValue(){
         リターン  Iと、
    } 
    保護仮想 ボイド関数func2(){ 
        iは ++ ; 
    } 
    保護int型私は、
}。
クラスの子供:公衆基地{
     公共の
    子(int型J):ベース(J){}
     ボイド関数func1(){ 
        iは = * 100 
        関数func2(); 
    } 
    保護ボイド関数func2(){ 
        I + = 2 ; 
    } 
}。
INT メイン(){ 
    基本 *のPB = 新しい子供(1 )。
    PB - > 関数func1(); 
    COUT << PB->のgetValue()<< ENDL。削除PBを。}

回答:12

//
(1)、第一のサブクラスのオブジェクトを作成ベース* PB =新しい新しい子は、それが1に初期化するが、PBの基本型である、
関数func1()は仮想関数ではないので、PB->関数func1()基底クラス関数func1により行われます、I = 10、次いで、関数func2()関数を呼び出し、
関数func2仮想関数ここに派生クラス見下ろすために後に見出され、派生クラスの実行、I = 12この場合、関数func2()を、
そして最後に実行PB->のgetValueを()、結果は12である
---------------------
著者:少し_cipher
源:CSDNの
オリジナル:HTTPS://blog.csdn.net/u012605629/article /詳細/ 43709613

 

おすすめ

転載: www.cnblogs.com/Peter-fight/p/10993666.html