下面是一個示例程序是什麼我談論:C++ - 呼兒方法將覆蓋在家長的名單
#include <iostream>
#include <list>
using namespace std;
class Thing {
public:
virtual void jump() { cout << "Called from Thing class" << endl; }
};
class Car: public Thing {
public:
virtual void jump() { cout << "Vroom vroom; imma car biotch" << endl; }
};
int main(int argc, char* argv[]) {
Car myCar;
list<Thing> myList;
myList.push_back(myCar);
std::list<Thing>::iterator iterator;
for (iterator = myList.begin(); iterator != myList.end(); ++iterator) {
iterator->jump();
}
return 0;
}
輸出:
Called from Thing class
我想要什麼要做的是列出「事情」。我希望能夠從Thing類中添加子類的實例;那麼我希望能夠從迭代器中調用它們的覆蓋函數。
唯一的問題是,即使在使用「虛擬」關鍵字時,迭代器也會使用Thing :: jump函數,而不是Car :: jump函數。
我該怎麼做才能使它不僅適用於Car,而且還包括Thing,Car等所有覆蓋「跳轉」功能的潛在子類。
多態性需要一個指針或引用的位置。你正在做的是切分你的派生對象,以便它變成簡單的基礎類型對象。 –
術語檢查:它是「覆蓋」和「重寫」。 – molbdnilo