所以這是我的設定的簡化版本:
class GenericSensor{
public:
int read(){
return something;
}
};
class SpecialSensor : public GenericSensor{
public:
int read(){
return somethingElse;
}
};
我有一個功能:
void someFunction(GenericSensor s){
printf("value is: %d\n", s.read());
}
如何someFunction使用GenericSensor或SpecialSensor任何其他派生類的物件?
uj5u.com熱心網友回復:
您應該宣告read()為一個virtual函式,該函式SpecialSensor或任何其他派生類可以override。
此外,您不應該GenericSensor通過值傳遞,否則您將切片呼叫者的物件。而是通過指標或參考傳遞它。所以通過指標或參考someFunction()接收。sGenericSensor*GenericSensor&
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/519728.html
標籤:C 遗产
下一篇:C -什么是虛擬方法?
