虛函式中的預設實參

2021-06-03 01:06:42 字數 434 閱讀 9138

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....