В чем смысл & в с ++? - PullRequest
       12

В чем смысл & в с ++?

3 голосов
/ 13 марта 2011

Я хочу знать значение & в приведенном ниже примере:

class1 &class1::instance(){

///something to do

}

Ответы [ 6 ]

8 голосов
/ 13 марта 2011

Оператор & имеет три значения в C ++.

  • "Побитовое И", например, 2 & 1 == 3
  • "Address-of", например: int x = 3; int* ptr = &x;
  • Модификатор ссылочного типа, например int x = 3; int& ref = x;

Здесь у вас есть модификатор ссылочного типа.Ваша функция class1 &class1::instance() является функцией-членом типа class1 с именем instance, которая возвращает ссылку -to- class1.Вы можете увидеть это более четко , если напишите class1& class1::instance() (что эквивалентно вашему компилятору).

7 голосов
/ 13 марта 2011

Это означает, что ваш метод возвращает ссылку на объект method1. Ссылка похожа на указатель в том смысле, что она ссылается на объект, а не на его копию, но разница с указателем заключается в том, что ссылки:

  • никогда не может быть неопределенным / NULL
  • вы не можете делать арифметику с ними

Так что это своего рода легкая, более безопасная версия указателей.

1 голос
/ 13 марта 2011

Возвращает ссылку на объект того типа, для которого он был определен.

1 голос
/ 13 марта 2011

Это ссылка (без использования арифметики с указателями для ее достижения) на объект.

0 голосов
/ 13 марта 2011

Это означает, что переменная это не сама переменная, а ссылка на нее. Поэтому в случае изменения его значения вы сразу увидите это, если для его просмотра воспользуетесь оператором print. Посмотрите ссылки и указатели, чтобы получить более подробный ответ, но в основном это означает ссылку на переменную или объект ...

0 голосов
/ 13 марта 2011

В контексте оператора выглядит так, как будто бы он возвращал ссылку на класс, в котором он был определен.Я подозреваю, что в разделе "Do Stuff" есть

return *this;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...