我已经以下代码:c + +覆盖基础构件值
class A
{
public:
int foo = 0;
};
class B: public A
{
public:
int foo = 1;
};
int main()
{
A *a = new B();
std::cout << a->foo;
std::getchar();
return 0;
}
输出:0
为什么乙不会覆盖从A构件FOO?
,以及如何获得的1所需的输出而无需进行转换到派生类
这不是压倒一切。它隐藏它。你不能有虚拟的领域,所以重写是不可能的。请参阅https://stackoverflow.com/questions/19290796/override-member-field-in-derived-classes。你可以使用一个函数。 –