【发布时间】:2014-04-06 14:09:06
【问题描述】:
我有两个关于虚拟方法的问题。
第一:
class Parent
{
public:
virtual void SHOW(int x = 5) { cout << "PARENT " << x << endl; }
};
class Child : public Parent
{
public:
virtual void SHOW(int y = 10) { cout << "CHILD " << y << endl; }
};
int main()
{
Child Y;
Parent* P = &Y;
P->SHOW();
getch();
return 0;
}
我认为 tt 应该是 CHILD 10 但结果是 CHILD 5
还有一个:
class Parent
{
public:
virtual void SHOW() { cout << "PARENT" << endl; }
};
class Child : public Parent
{
private:
virtual void SHOW() { cout << "CHILD" << endl; }
};
int main()
{
Child Y;
Parent* P = &Y;
P->SHOW();
getch();
return 0;
}
它会在屏幕上显示 CHILD。不知道怎么从外部调用的私有方法?
谢谢。我正在学习英语所以.. :)
【问题讨论】:
-
默认值不会被继承,即使函数是虚拟定义的。它们被解析为变量(在本例中为父类)的 static 类型的默认值。至于倒数第二段关于私有方法的问题,你是什么意思?
-
CHILD's SHOW 是一个私有方法。为什么可以从 P->SHOW() 调用