Ho due classi:Domanda con funzioni virtuali
class x {
public:
virtual void hello() {
std::cout << "x" << std::endl;
}
};
class y : public x {
public:
void hello() {
std::cout << "y" << std::endl;
}
};
Qualcuno può spiegare perché i seguenti due chiamate a ciao() stampare i messaggi differenti? Perché entrambi non stampano "y"? È perché il primo è una copia mentre il secondo punta effettivamente all'oggetto in memoria?
int main() {
y a;
x b = a;
b.hello(); // prints x
x* c = &a;
c->hello(); // prints y
return 0;
}
Penso che questa sia la prima volta che vedo qualcuno indovinare correttamente la causa, buon lavoro. – GManNickG