a.h
class a;
a.cpp
void a::log(int a, int b, int c) const" << std::endl;
}b.h
#include "a.h"
class b : public a;
b.cpp
void b::log(int a, int b, int c) const" << std::endl;
}main.cpp
#include "a.h"
#include "b.h"
int main()
程式輸出為
b class
a class
可以看到,當pa指標指向不同的物件時,呼叫的虛函式是不一樣的,發生了動態繫結,但是預設實參使用的都是基類的虛函式的預設實參。
c++primer中講道:
和其他函式一樣,虛函式也可以擁有預設實參。如果某次函式呼叫使用了預設實參,則該實參由本次呼叫的靜態型別決定。
因為指標是基類的指標,所以使用基類的預設實參,即使實際呼叫了派生類的虛函式。
因此,作者也強調,
如果虛函式使用實參,則基類和派生類中定義的預設實參最好一致。
虛函式中的預設實參
c premier 先看例子吧 include iostream using namespace std class base class derived public base public int foo int ival 2048 cout cout cout 我是初學c 用編譯器執行突然發現...
虛函式與預設實參
include using namespace std 2013.9.5 c primer p482 虛函式也可以有預設實參。如果有用在給定呼叫中的預設實參值,該值將在編譯時確定。如果乙個呼叫省略了具有預設值的實參,則所用的值由呼叫該函式的型別定義,與物件的動態型別無關。通過基類的引用或指標呼叫虛函...
c 虛函式與預設實參
c primer 中原文 像其他任何函式一樣,虛函式也可以有預設實參。通常,如果有用在給定呼叫中的預設實參值,該值在編譯時確定。如果乙個呼叫省略了具有預設值的實參,則所用的值由呼叫該函式的型別定義,與物件的動態型別無關 通過基類的引用或指標呼叫虛函式時,預設實參為在基類虛函式宣告中指定的值,如果通過...