0
以下main輸出的答案是「i = 10的派生類顯示」,但我不明白爲什麼?這個函數肯定是在基類型上調用的?靜態基類型和動態派生類型的輸出
這裏確定答案的思路是什麼?
class base
{
public:
virtual void display(int i = 10)
{
cout<<"Base class display with i = "<<i<<endl;
}
};
class derived : public base
{
public:
void display(int i = 20)
{
cout<<"Derived class display with i = "<< i <<endl;
}
};
int main(int argc, char *argv[])
{
base *bptr = new derived;
bptr->display();
return 0;
}
好的,所以你可以使用虛函數默認參數的唯一方法是如果你聲明靜態類型是派生類?派生的d = new Derived(); – user997112
@ user997112您最好使用相同的默認參數來避免任何意外。 – Yang
這種行爲的原因是什麼,只有這樣我才能理解 - 而不是記住這個規則?派生類還有其他類似的規則嗎? – user997112