我在c ++中学习了多态性,这就是我的代码。
class Gun
{
public:
virtual void Shoot()
{
cout<<"BANG";
}
}
class Machinegun:public Gun
{
public:
void Shoot() override
{
cout<<"DRRRRRRRRRRRRRRR";
}
}
int main()
{
Gun *gun;
Machinegun machinegun;
//Why I can't use *gun=&machinegun;??????
//It works when I write Gun *gun=&machinegun;
}
* gun =&machinegun * gun =&machinegun;不是同一回事。 ???
我看不出有什么区别
谢谢
最佳答案
似乎您对*的两种用法感到困惑。
Gun * gun
这里的*用于定义Gun类型的指针。因为它是在Gun类型之后出现的。
如果在已经定义的对象(特别是指针类型)上使用*,例如第二个示例,则意味着要取消引用该指针,返回的就是指针引用的对象,在您的情况下为Gun。不能为机枪*类型分配枪对象
您可能想要的是
Machinegun machinegun;
Gun * gun;
gun = &machinegun;
关于c++ - 为什么Gun * gun =&machinegun在工作,而* gun =&machinegun没有在工作?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/58995244/