C++ Daily 《3》----建構函式可否是虛擬函式
C++ 中建構函式可否是虛擬函式?
絕不要!!
而且,在建構函式中呼叫虛擬函式也是不提倡的行為,因為會引發預想不到的結果。
因為,在 derived class 物件構造的過程中,首先呼叫的是基類的建構函式,等基類構造結束,才開始構造派生類的部分。
這個過程中,編譯器將該物件視為 基類,而非派生類(因為,派生類物件的專屬部分還未初始化!!!)
所以,如果在建構函式中呼叫虛擬函式,虛擬函式呼叫的一定是基類的虛擬函式,物件的行為就如同是基類的物件一樣。
或者可以這麼說:這個時候,虛擬函式不再是 虛擬函式。。。
參考:Effective C++ 條款9: 絕不要在構造和析構過程中呼叫 virtual funcion
相關文章
- C++建構函式和解構函式呼叫虛擬函式時使用靜態聯編C++函式
- C++之類解構函式為什麼是虛擬函式C++函式
- C++ 建構函式和解構函式C++函式
- 虛擬函式 純虛擬函式函式
- 虛擬函式,虛擬函式表函式
- c++虛擬函式表C++函式
- 【C++筆記】虛擬函式(從虛擬函式表來解析)C++筆記函式
- 【C++筆記】虛擬函式(從虛擬函式概念來解析)C++筆記函式
- 深入C++成員函式及虛擬函式表C++函式
- C++ 虛擬函式表解析C++函式
- C++ 介面(純虛擬函式)C++函式
- C++入門記-建構函式和解構函式C++函式
- 介面、虛擬函式、純虛擬函式、抽象類函式抽象
- C++中建構函式,拷貝建構函式和賦值函式的詳解C++函式賦值
- 【C++】初始化列表建構函式VS普通建構函式C++函式
- C++多型之虛擬函式C++多型函式
- 預設建構函式、引數化建構函式、複製建構函式、解構函式函式
- C++複製建構函式C++函式
- 建構函式與解構函式函式
- [Lang] 虛擬函式函式
- C++虛擬函式學習總結C++函式
- C++ 派生類函式過載與虛擬函式繼承詳解C++函式繼承
- 類的建構函式和解構函式函式
- ## 建構函式函式
- 迴圈單連結串列建構函式、解構函式C++實現函式C++
- c++ 的學習 建構函式1C++函式
- C++型別轉換建構函式C++型別函式
- C++拷貝建構函式詳解C++函式
- C++純虛擬函式簡介及區別C++函式
- c++虛擬函式實現計算表示式子C++函式
- PHP筆記:建構函式與解構函式PHP筆記函式
- C++ 虛解構函式簡單測試C++函式
- JavaScript 建構函式JavaScript函式
- C++解構函式C++函式
- 虛擬函式與多型函式多型
- 虛擬函式的呼叫原理函式
- 【譯】JavaScript 工廠函式 vs 建構函式JavaScript函式
- 建構函式與普通函式的區別函式
- c++中內建函式C++函式