C++ Daily 《3》----建構函式可否是虛擬函式
C++ 中建構函式可否是虛擬函式?
絕不要!!
而且,在建構函式中呼叫虛擬函式也是不提倡的行為,因為會引發預想不到的結果。
因為,在 derived class 物件構造的過程中,首先呼叫的是基類的建構函式,等基類構造結束,才開始構造派生類的部分。
這個過程中,編譯器將該物件視為 基類,而非派生類(因為,派生類物件的專屬部分還未初始化!!!)
所以,如果在建構函式中呼叫虛擬函式,虛擬函式呼叫的一定是基類的虛擬函式,物件的行為就如同是基類的物件一樣。
或者可以這麼說:這個時候,虛擬函式不再是 虛擬函式。。。
參考:Effective C++ 條款9: 絕不要在構造和析構過程中呼叫 virtual funcion
相關文章
- C/C++—— C++中建構函式不能是虛擬函式的原因分析C++函式
- C++建構函式和解構函式呼叫虛擬函式時使用靜態聯編C++函式
- C++之類解構函式為什麼是虛擬函式C++函式
- C++箴言:避免解構函式呼叫虛擬函式C++箴言函式
- 虛解構函式(√)、純虛解構函式(√)、虛建構函式(X)函式
- C++ 虛擬函式C++函式
- C++虛擬函式C++函式
- C++ 建構函式和解構函式C++函式
- C++中抽象類、虛擬函式和純虛擬函式C++抽象函式
- C++中的虛擬函式與虛擬函式表 (轉)C++函式
- 虛擬函式,虛擬函式表函式
- 虛擬函式 純虛擬函式函式
- C++ 類建構函式和解構函式C++函式
- c++虛擬函式表C++函式
- C++虛擬函式bugC++函式
- 【C++筆記】虛擬函式(從虛擬函式表來解析)C++筆記函式
- 【C++筆記】虛擬函式(從虛擬函式概念來解析)C++筆記函式
- 【C++】建構函式C++函式
- C++建構函式C++函式
- 原則25:把建構函式和非成員函式虛擬化函式
- 深入C++成員函式及虛擬函式表C++函式
- C++ 介面(純虛擬函式)C++函式
- C++ 中的虛擬函式C++函式
- C++ 虛擬函式表剖析C++函式
- C++ 虛擬函式表解析C++函式
- C++入門記-建構函式和解構函式C++函式
- [C++]顯示呼叫建構函式和解構函式C++函式
- 介面、虛擬函式、純虛擬函式、抽象類函式抽象
- 虛擬函式函式
- C/C++——建構函式、複製建構函式和解構函式的執行時刻C++函式
- C++中建構函式,拷貝建構函式和賦值函式的詳解C++函式賦值
- 【C++】初始化列表建構函式VS普通建構函式C++函式
- 關於類的建構函式不能為虛擬函式的幾點理由!函式
- C++函式中那些不可以被宣告為虛擬函式的函式C++函式
- 3.建構函式函式
- C++多型之虛擬函式C++多型函式
- C++中虛擬函式的作用C++函式
- C++虛擬函式解析(轉載)C++函式