我正在學習C++形式在C++ V1中思考。我遇到了一個演示繼承的例子。這裏去吧爲什麼'&'會改變對象的行爲?
#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()
?
http://stackoverflow.com/a/274634/2101267 –