我正在学习 C++ V1 中的 C++ 形式的 Thinking。我遇到了一个演示继承的示例。来了
#include <iostream>
class Instrument{
public:
virtual void play(){
std::cout<<"instrument::play()";
}
};
class Wind: public Instrument{
public:
void play(){
std::cout<<"Wind::play()";
}
};
void tune(Instrument& i){
i.play();
}
int _tmain(int argc, _TCHAR* argv[])
{
Wind flute;
tune(flute);
return 0;
}
这Wind::play()
在控制台上输出。
但是,如果我将方法“调整”更改为
void tune(Instrument i){
i.play();
}
输出将instrument::play()
既然添加了“&”,是为了传递长笛的引用而不是副本,为什么程序输出instrument::play()
而不是Wind::play()
?