真的不好冠軍,想不起怎麼說吧,對不起。C++繼承,調用給定的類函數而不是它的父類?
所以說我有下面的代碼:
class A {
virtual int getSize() {
return 0;
}
}
class B : public A {
int getSize() {
return 32;
}
}
void doStuff(A a) {
std::cout << a.getSize() << std::endl;
}
int main() {
B b;
doStuff(b);
}
這將打印出0
,但是我希望它打印出來32
。換句話說,我想通過它的類,它打印出類功能,所以我可以創建一個類C
,其中大小爲64,如果我將該實例傳遞給doStuff
函數,我希望它打印64.
有什麼辦法可以在C++中做到這一點,我必須使用模板或我不知道的一些奇特的C++功能嗎?
實現以供將來參考,這種效應被稱爲對象的「切片」。 + 1 – Shaggi