Это означает, что вы возвращаете ссылку на значение, которое нельзя изменить.
Если вы возвращаете ссылку на локальную переменную, то вы будете иметь проблемы, так как он будет ссылаться на то, что больше не существует:
int const &GetValue()
{
int x = 10;
return x; // THIS IS BAD!
}
Кроме того, это действительно не имеет смысла return const ссылается на интегральные типы (int, long и т. д.), поскольку они в основном занимают то же место, что и ссылка. Однако, если вы это сделаете, это не имеет большого значения.
Если вы возвращаете нелокальные данные (т. Е. Данные членов), используйте ссылки, если данные всегда существуют, и используйте указатели, если данные могут не существовать, так что NULL
указывает на отсутствие данных. Например:
const std::string &User()const
{
return m_Username;
}
int Age() const
{
return m_Age; // Pointless to use a reference here
}
const Person *Partner()const
{
return m_Parter; // User may not have a partner, so pointer
}
Сделать указатель или ссылку const
, если вы не хотите, чтобы абонент, чтобы иметь возможность изменить возвращаемый объект.
такой же как: const int & ... – neagoegab
Эта функция возвращает ссылку на переменную-член класса, к которой она принадлежит, но вызывающая функция не сможет ее изменить. –
@barakmanos: Итак, сама переменная-член может быть изменена внутри функции, но любая вызывающая функция не может ее изменить? Кроме того, можете ли вы сказать мне, есть ли какие-либо предпочтения в использовании * или & для этого? – Floose