注意:虛函式中盡量不要使用預設引數!!!父類
#pragma once
class
base
;
#include
"base.h"
base::
base()
base::
~base()
子類
#pragma once
#include
"base.h"
classa:
public base
;
#include
"a.h"
#include
a::a()
a::~a(
)void a::
setnumber
(int num )
呼叫
base* a1 =
new a;
a1->
setnumber(9
);base* a2 =
new a;
a2->
setnumber()
; a* a3 =
new a;
a3->
setnumber()
;
9
24
這是因為帶有預設引數的虛函式,在使用預設引數的時候是靜態繫結的,預設引數值是由宣告的指標型別的預設引數決定的,而不是由物件的型別預設引數決定。
也就是說,在沒有輸入預設引數的情況下,編譯期由指標的型別決定了引數,如果輸入了引數則是動態繫結,根據物件的型別來決定呼叫哪個函式。
aaa
C 中 虛函式中的預設引數問題
原文 nwplei的部落格 當通過指標呼叫乙個物件的方法時,如果該方法是虛函式,則實際呼叫的是該例項的方法。當預設引數和虛函式一起出現的時候到底用哪個預設值呢?虛函式是動態繫結的,但是為了執行效率,預設引數是靜態繫結的。也就是 指標是哪種型別,就呼叫該型別對應的類中,該函式定義時的預設值。inclu...
C 中 虛函式中的預設引數問題
當通過指標呼叫乙個物件的方法時,如果該方法是虛函式,則實際呼叫的是該例項的方法。當預設引數和虛函式一起出現的時候到底用哪個預設值呢?虛函式是動態繫結的,但是為了執行效率,預設引數是靜態繫結的。也就是 指標是哪種型別,就呼叫該型別對應的類中,該函式定義時的預設值。include using names...
虛函式的預設引數問題
q include using namespace std class base 乙個表示幾何形狀的類 class shape class rectangle public shape class circle public shape 用圖形來表示是下面這樣 shape rectangle cir...