class Mobile {
double memory_util;
public:
virtual void power_save(double duration) = 0;
};
class Laptop : public Mobile {
bool is_unlocked;
protected:
bool is_charged;
public:
void power_save(double duration);
virtual double remaining_time();
};
class NegativeNumber {};
class IPad : public Laptop {
int generation;
public:
void power_save(double duration);
bool isJailBroken();
};
class HPLaptop : public Laptop {
int warranty_years;
public:
void extend_warranty(int years);
};
class HPdv6 : public HPLaptop {
bool repaired;
public:
double remaining_time(){ return HPLaptop::remaining_time(); }
bool is_repaired { return repaired; }
};
你想做到以下幾點:
int main() {
Mobile* d = new HPdv6();
Laptop *s = d;
d->power_save(100);
cout << 「remaining operation time: 」 <<
s->remaining_time() << endl;
return 0;
}
哪些方法實際上在這裏叫什麼名字?據我所知,移動是一個虛函數,但我不知道該如何處理的類層次結構,當你有這樣的指針。是否有關於類層次結構的任何提示可以使處理各種繼承類的問題更容易理解?
謝謝。
'筆記本電腦* S = d;'不能編譯,因爲你需要某種形式的垂頭喪氣。 – chris
請解釋。 –
另外,假設它編譯... –