c ++ noob问题,&ss!ss或ss.X

时间:2018-10-26 06:59:07

标签: c++ function

对不起,这是一个非常愚蠢的问题。我是应届C ++学生...

我试图理解我在网上找到的C ++代码,用于类似游戏的太空射击游戏。我想在我的项目中使用它。英雄向敌人射箭。它有&ss,ss.X和!ss,但我不知道它们的含义。什么的。之间的变量是什么意思? &ss是什么意思?您是否可以分享与此相关的任何主题或课程?还是您知道这些被称为什么术语?我正在尝试在Google上进行搜索,但是我不知道正确的关键字。

这是怪物击中英雄的时间。这是我的怪物类中的一个函数。

QUESTION MARK

谢谢!

2 个答案:

答案 0 :(得分:2)

我认为您需要开始学习c ++基本教程。看一下此页面:https://www.learncpp.com

&ss表示将Hero类型的对象作为引用传递。了解您是C ++的初学者,您不知道通过引用传递的含义。因此,让我们来看一个示例:

如果您将函数声明为void Collision(Hero ss){},然后在main(){}中使用它。

void Collision(Hero ss) {}

int main() 
{
  Hero MyHero;
  Collision(MyHero);
}

这意味着在Collision方法的ss参数内将是MyHero对象的副本。因此,您将对ss进行任何修改,而MyHero不会被修改。

但是如果您声明Collision(Hero&ss){}无效:

void Collision(Hero &ss) {}

int main() 
{
  Hero MyHero;
  Collision(MyHero);
}

这意味着ss将是Myhero对象。这意味着您对ss所做的任何修改都会修改MyHero对象。

答案 1 :(得分:1)

Hero& ss通过引用传递了Hero类的对象(通过引用传递是要搜索的术语)。这意味着或多或少地将对象的地址传递给此函数,并且由于它不是const引用,因此可以调用该类的所有方法(const和non-const)。

ss.X实际上是ss.X(),并且是X()中方法Hero的调用,该方法返回成员变量x的值。

我在您的示例中没有看到任何!ss,但是它将调用Hero中的一个运算符,该运算符返回布尔值,如果返回的值是truefalse(!是非运算符)。