ich habe folgenden Code:C++ Basis Überbrückungselement Wert
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;
}
output: 0
warum B nicht das Element foo von A außer Kraft setzen?
und wie die gewünschte Leistung von 1 zu erhalten, ohne
Es ist nicht zu überschreiben. Es versteckt es. Da virtuelle Felder nicht möglich sind, ist ein Überschreiben nicht möglich. Siehe https://stackoverflow.com/questions/19290796/override-member-field-in-derived-classes. Sie könnten eine Funktion verwenden. –