所以我有2班,C++繼承。對象調用超類方法而不是自己的方法?
class Animal{
public:
Animal(int age, int hairCount) {
howOld = age;
numOfHairs = hairCount;
}
void print(){
cout << "Age: " << howOld << "\tNumber of Hairs: " << numOfHairs << endl;
}
protected:
int howOld;
int numOfHairs;
};
class Bird: public Animal{
public:
Bird(int age, int hairCount, bool fly) : Animal(age, hairCount) {
canItFly = fly;
}
void print() {
cout << "Age: " << howOld << "\tNumber of Hairs: "
<< numOfHairs << "\tAbility to fly: " << canItFly << endl;
}
protected:
bool canItFly;
};
如果在主程序中,我有這樣的事情:
#include <vector>
#include <iostream>
using namespace std;
int main() {
vector<Animal> list;
list.pushBack(Bird(5,10000,true));
list.pushBack(Animal(14,1234567));
for(int i = 0; i < list.size(); i++){
list[i].print(); //Calls the super class for both outputs
}
return 0;
}
出於某種原因,我的代碼(這是不是)調用超在這兩種情況下都需要使用「打印方法」
編輯:我遺漏了那個小細節。我確實對超類有虛擬的。不知道爲什麼它不打印。 – snotyak
哎呀,我已經糾正了我的答案。 – Beginner
在聲明向量之後,我無法使用list [i] .print()調用print方法。 – snotyak