开发平台(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();
希望各位前辈能指点迷津,谢谢各位!!