c++premier
先看例子吧
#include"iostream"
using namespace std;
class base;
class derived:public base{
public:int foo(int ival=2048){
cout<
cout<
cout<
我是初學c++,用編譯器執行突然發現輸出的是
好像有點不對啊,從結果derived::foo()--ival都是呼叫了derived裡的foo,符合多型的機制,但是問題是1024和2048怎麼回事呢?
呼叫的真正函式是在執行時刻pb和pd指向的型別所決定,也就是晚**,而預設實參是在編譯時刻就根據被呼叫函式的物件的型別所決定。具體解釋可見c++ premier page771.第三版哦。
虛函式與預設實參
include using namespace std 2013.9.5 c primer p482 虛函式也可以有預設實參。如果有用在給定呼叫中的預設實參值,該值將在編譯時確定。如果乙個呼叫省略了具有預設值的實參,則所用的值由呼叫該函式的型別定義,與物件的動態型別無關。通過基類的引用或指標呼叫虛函...
c 虛函式與預設實參
c primer 中原文 像其他任何函式一樣,虛函式也可以有預設實參。通常,如果有用在給定呼叫中的預設實參值,該值在編譯時確定。如果乙個呼叫省略了具有預設值的實參,則所用的值由呼叫該函式的型別定義,與物件的動態型別無關 通過基類的引用或指標呼叫虛函式時,預設實參為在基類虛函式宣告中指定的值,如果通過...
關於虛函式的預設實參的問題
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....