【发布时间】:2018-04-21 12:59:03
【问题描述】:
我正在与 C++ 中的多态性作斗争。我有 2 个课程,Hero 和 MainPlayer。 Hero 是基类,MainPlayer 派生自 Hero。在Hero 我有一些变量和方法,MainPlayer 有一些额外的变量和方法。我正在尝试创建多态指针,就像:
Hero *player = new MainPlayer(constructor);
然后使用播放器我只能访问来自Hero 类的方法,否则会出现编译错误。我想问是否可以
通过这个多态指针使用MainPlayer 方法和变量:player。
我的代码:
class Hero
{
public:
Hero();
virtual void fun() = 0;
private:
int a, b;
};
class MainPlayer:
public Hero
{
public:
MainPlayer();
void fun();
void fun2();
private:
int c;
};
int main()
{
Hero *player = new MainPlayer(constructor);
player->fun(); // works
player->fun2(); //doesn't work
return 0;
}
【问题讨论】:
-
代码在呈现时最好理解,而不是描述。
-
是的,有可能
-
关于术语的一点:指针就是指针;没有“多态指针”这样的东西。指针可以指向多态类型的对象,这就是您所看到的。
标签: c++ oop pointers polymorphism