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