我在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/

10-12 02:07