C++ noob questions, & ss! ss или ss.x

Извините, это вопрос для новичков. Я только что учусь на C++ ...

Я пытаюсь понять код C++, который я нашел в Интернете для космического шутера, подобного игре. Я хочу использовать его в своем проекте. Герой стреляет во врага стрелами. Там есть & ss, ss.X и! Ss, но я не знаю, что они означают. Что это . между переменными имеют ввиду? А что значит & ss? Не могли бы вы поделиться какой-нибудь темой или уроком, связанным с этим? Или вы знаете, как они называются? Я пытаюсь выполнить поиск в Google, но не знаю правильного ключевого слова.

Это когда монстр попадает в героя. Это функция внутри класса моего монстра.

class monster
{
private:
int x;
int y;
public:
int X()  { return x; } 
int Y()  { return y; }

void Collision(Hero &ss) 
   {
   if(((x >= ss.X()) && (x <= ss.X() + 5)) && ((y >= ss.Y()) && (y <= ss.Y() + 2)))
   { 
   ss.Damage(); //a function under my hero class which will decrease hero energy
   gotoxy(x,y); printf(" "); 
   x = rand()%74 + 3; 
   y = 4;
   }
}

Спасибо!

Любой базовый учебник по C++ расскажет обо всем этом за вас.

John3136 26.10.2018 08:59

Все это операторы. Найдите список операторов для C++ ...

HolyBlackCat 26.10.2018 09:01

Вы не должны задавать вопросы, ничего не зная о C++. было бы лучше, если бы вы прочитали несколько руководств для начинающих.

duong_dajgja 26.10.2018 09:03

Если вы действительно рассчитываете понять эти символы, просто читая в stackoverflow, вы будете введены в заблуждение! Я могу вам сказать, первый - это ссылка на s, второй - это оператор NOT на s, а третий - доступ к члену s. Это вас чему-нибудь научило? Без фона это бессмысленно. Чтобы понять C++, нужно много работать. Кодирование - это сложно и требует тяжелой работы. Выберите книгу и начните читать!

The Quantum Physicist 26.10.2018 10:20
11
5
128
2

Ответы 2

Hero& ss передает объект класса Hero по ссылке (поиск по ссылке - это термин). Это более или менее означает, что адрес объекта передается в эту функцию, и, поскольку это не константная ссылка, вы можете вызывать все методы класса (константные и неконстантные).

ss.X на самом деле является ss.X() и представляет собой вызов метода X() в Hero, который возвращает значение переменной-члена x.

Я не вижу никакого !ss в вашем примере, но это вызовет оператор в Hero, который возвращает логическое значение, и результатом будет true, если возвращаемое значение - false (! - оператор not).

Большое спасибо. Я обязательно прочитаю про "передать по ссылке".

DigitalArtistB 26.10.2018 09:40

Я думаю, вам нужно начать с базовых руководств по C++. Взгляните на эту страницу: https://www.learncpp.com

& ss означает, что ваш объект типа Hero передается как ссылка. Понимая, что вы новичок в C++, вы не знаете, что означает передача по ссылке. Итак, давайте посмотрим на пример:

Если вы объявляете свою функцию как void Collision (Hero ss) {}, а затем используете ее в main () {}.

void Collision(Hero ss) {}

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

Это означает, что внутри параметра ss вашего метода Collision будет копия вашего объекта MyHero. Таким образом, любые изменения, которые вы сделаете для ss, MyHero не будут изменены.

Но если вы объявите недействительным Collision (Hero & ss) {}:

void Collision(Hero &ss) {}

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

Это означает, что ss будет объектом Myhero. Это означает, что любая модификация, которую вы сделаете для ss, изменит объект MyHero.

Понятно. Большое спасибо за примеры и объяснения. Это та часть, в которой я до сих пор не понимаю в моем классе. Я только начал писать на C++, так что извините за мою глупость. Итак, это (& ss) просто параметры, а не специальные ключевые слова.

DigitalArtistB 26.10.2018 09:39

Другие вопросы по теме