建構函式中是否可以呼叫虛函式

2021-08-09 02:11:47 字數 536 閱讀 2234

1. 從語法上講,呼叫完全沒有問題。

2. 但是從效果上看,往往不能達到需要的目的。

effective 的解釋是:

派生類物件構造期間進入基類的建構函式時,物件型別變成了基類型別,而不是派生類型別。

同樣,進入基類析構函式時,物件也是基類型別。

所以,虛函式始終僅僅呼叫基類的虛函式(如果是基類呼叫虛函式),不能達到多型的效果,所以放在建構函式中是沒有意義的,而且往往不能達到本來想要的效果。

親測可以,但是此時的虛函式和普通函式沒有區別了。

構造函式呼叫虛函式

在建構函式中呼叫虛成員函式,雖然這是個不很常用的技術,但研究一下可以加深對虛函式機制及物件構造過程的理解。這個問題也和一般直觀上的認識有所差異。先看看下面的兩個類定義。struct c180 virtual foo struct c190 public c180 virtual foo 父類中有乙個...

構造函式呼叫虛函式

參考stroustrup的回答吧 在建構函式中呼叫虛成員函式,雖然這是個不很常用的技術,但研究一下可以加深對虛函式機制及物件構造過程的理解。這個問題也和一般直觀上的認識有所差異。先看看下面的兩個類定義。struct c180 virtual foo struct c190 public c180 v...

C 建構函式中呼叫虛函式

我們知道 c 中的多型使得可以根據物件的真實型別 動態型別 呼叫不同的虛函式。這種呼叫都是物件已經構建完成的情況。那如果在建構函式中呼叫虛函式,會怎麼樣呢?有這麼一段 class a virtual void func void test public int m ival class b publ...