此代码在我运行时拒绝将适当的消息打印到控制台。使用指针而不是引用似乎有效(-> 而不是 .)。我是 OOP 的新手,如果你觉得这很荒谬,请原谅我。
#include <iostream>
using namespace std;
class instrument {
public:
virtual void play(){}
};
class drum : public instrument {
public:
void play(){
cout << "dum, dum" << endl;
}
};
class piano : public instrument {
public:
void play(){
cout << "pling" << endl;
}
};
int main (){
instrument i;
piano p;
drum d;
instrument &pi = i;
pi.play(); // -
pi = p;
pi.play(); // pling
pi = d;
pi.play(); // dum, dum
}