gpt4 book ai didi

c++ - 为什么 Gun *gun=&machinegun 有效,而 *gun=&machinegun 无效?

转载 作者:行者123 更新时间:2023-11-27 23:36:15 24 4
gpt4 key购买 nike

我学习了 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.不能为 Gun 对象分配 Machinegun* 类型

你可能想要的是

Machinegun machinegun;
Gun * gun;
gun = &machinegun;

关于c++ - 为什么 Gun *gun=&machinegun 有效,而 *gun=&machinegun 无效?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58995244/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com