首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >为什么Gun *gun=&machinegun在工作,但*gun=&machinegun不工作?

为什么Gun *gun=&machinegun在工作,但*gun=&machinegun不工作?
EN

Stack Overflow用户
提问于 2019-11-22 13:27:35
回答 4查看 140关注 0票数 0

我在c++中学习多态性,这是我的代码。

代码语言:javascript
复制
   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;?我看没什么区别,谢谢

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2019-11-22 13:36:48

你似乎混淆了*的两种用法。

代码语言:javascript
复制
Gun * gun

这里,*用于定义Gun类型的指针。因为它是在枪的后面。

如果您在已经定义的对象(特别是指针类型)上使用*,就像您的第二个示例一样,它意味着取消引用该指针,返回的是指针所引用的对象,在您的例子中是Gun。枪支对象不能用机关枪*类型赋值

你可能想要的是

代码语言:javascript
复制
Machinegun machinegun;
Gun * gun;
gun = &machinegun;
票数 1
EN

Stack Overflow用户

发布于 2019-11-22 13:32:59

在作业的左边和右边使用错误的类型。

代码语言:javascript
复制
*gun=&machinegun;

右侧操作数具有Machinegun *类型(即指针类型),而左侧操作数具有Gun类型。

代写

代码语言:javascript
复制
gun = &machinegun;

在这种情况下,指向派生类的指针将被隐式转换(重新解释)到基类的指针。

另一种方法是使用引用。例如

代码语言:javascript
复制
Machinegun machinegun;
Gun &gun = machinegun;
票数 1
EN

Stack Overflow用户

发布于 2019-11-22 13:53:42

  1. in C++您声明了一个像

这样的指针

int *名称;

  1. ,但是要将指针转换为它指向的数字,请使用

*姓名

  1. 所以当您使用

枪*=&机枪

您尝试将枪指向的值设置为指向机关枪的指针,这会引发错误,因为您不能仅仅将任何值设置为指针

当你做的时候,

枪*枪=&机枪

您正在创建一个指针,并将指针设置为

机枪

你要找的是

枪=&机关枪

这是一个指向机关枪的指针。

下面是我用来检查工作的代码示例

代码语言:javascript
复制
#include <iostream>
using namespace std;

int x = 100;           //create number
int* y = &x;           //creat pointer and point to number 


int main()
{
    y = &x;            //changing the value of an existing pointer
    cout << *y << endl;//printing out the value of number pointed to
}
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/58995244

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档