在乙個型別的繼承體系中,成員的構造順序

2022-01-11 06:50:51 字數 892 閱讀 2617

先看**,寫出結果

class a

public virtual void printfields(){}

}

class b:a

public override void printfields()

,y=",x,y);

} 問題,當執行如下**時,輸出的結果是多少?

b b =new b();

b.printfields();

基本原理:乙個帶有基類的型別的構造順序是:先執行成員變數的初始化表示式,然後執行父類的構造,最後呼叫自己的構造方法。

所以,結果是

再舉乙個例子,加深對這個原理的印象

先看繼承結構

public class ref

}

public class base

}

public class a:base

}

public class b : a

}

public class c : b

}呼叫如下**的輸出是

最後,向你推薦這個小工具,可以執行片斷式的**,而不用開啟visual studio 啟動乙個工程

如果你懷疑自己的判斷,拿起這個小工具,執行一下**,就明白了。

類的繼承中的乙個錯誤

基類 templateclass mstack 派生類1 template class s1 public mstack 派生類2 templateclass s2 public mstack 兩個派生類都實現了基類的虛函式,結果出現編譯錯誤 error c2995 bool mstack mpus...

c 程式設計 繼承中的析構函式和靜態成員

基於前乙個作業題目,改寫 animal 類和 dog 類 根據使用者輸入的數值,建立相應個數的 animal 物件和 dog 物件,然後再銷毀。用類的靜態資料成員記錄存活物件的數量。用建構函式和析構函式來更新存活物件的數量 10分 題目內容 編寫兩個類 dog類繼承animal類 animal類和d...

關於繼承的乙個問題

class a virtual a class b public a virtual b class c public b virtual c int fun int n char last4hex unsigned int num,char a 5 int main int argc,char a...