我已經以下代碼: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。你可以使用一個函數。 –