[問題] 新手Overriding問題
看板C_and_CPP (C/C++)作者b90022790 (PomeloLaLa)時間6年前 (2019/06/28 21:33)推噓3(3推 0噓 0→)留言3則, 3人參與討論串1/2 (看更多)
開發平台(Platform): (Ex: Win10, Linux, ...)
Linux
Ubuntu 16.04 LTS
編譯器(Ex: GCC, clang, VC++...)+目標環境(跟開發平台不同的話需列出)
GCC
問題(Question):
版上的前輩大家好!我是剛畢業的高中生!最近大略讀過一遍原文螞蟻書的OOP部份,然而
OOP的實作經驗幾乎沒有,只有寫過螞蟻書的一些題目。
現在將以前的練習作業寫成OOP,目前遇到的這個問題讓我卡住很久。
後面會附上精減很多的CODE,想請各位前輩幫我看是不是哪個部份觀念錯誤!麻煩各位了
Skill是父類別,規範子類別需有use()
Fire繼承Skill,Override覆寫 use()
class Skill
{
public:
void use(){...A...}
}
class Fire : public Skill
{
public:
void use(){...B...}
}
我用一個新的類別Skill_List將擁有的skill串起來方便程式使用
class Skill_List()
{
public:
Skill_List(){
this->skill[0]=new Fire;
this->skill[1]=new Hide;
}
private:
Skill *skill[2]
}
然而欲使用skill[0]的use()時,執行的卻不是子類別Fire裡的use() B動作,而是父類別的A動作
我很困惑的是我儲存的列表明明是用指標存,但是為什麼會出現不屬於Fire類別的動作
Skill_List list;
list.skill[0]->use();
希望各位前輩能指點迷津,謝謝各位!!
--
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 1.168.131.128 (臺灣)
※ 文章網址: https://www.ptt.cc/bbs/C_and_CPP/M.1561728797.A.B80.html
推
06/28 21:41,
6年前
, 1F
06/28 21:41, 1F
謝謝Tony大,太常寫php,指記得c++沒有abstract,interface,忘了有virtual的存在,我等等把書拿出來再翻一下
這部份!謝謝你!
※ 編輯: b90022790 (1.168.131.128 臺灣), 06/28/2019 21:46:08
※ 編輯: b90022790 (1.168.131.128 臺灣), 06/28/2019 22:25:14
推
06/28 22:47,
6年前
, 2F
06/28 22:47, 2F
推
06/29 18:36,
6年前
, 3F
06/29 18:36, 3F
討論串 (同標題文章)
完整討論串 (本文為第 1 之 2 篇):
C_and_CPP 近期熱門文章
PTT數位生活區 即時熱門文章
33
68