Мне кажется, что этот вопрос наверняка где-то на SO, но я либо не могу найти правильные условия поиска, либо его как-то пропустили.
Предположим, у меня есть класс, который защищает своих членов вот так ...
class MyClass {
int m_value;
public:
MyClass(int v) : m_value(v) {}
int value() const { return m_value; }
}
Я видел пример кода по всему SO, который вместо этого возвращает константную ссылку на переменную-член, например ...
class MyClass {
int m_value;
public:
MyClass(int v) : m_value(v) {}
const int& value() const { return m_value; }
// ^^^^^^^^^^
}
Я понимаю значение возврата const в целом и значение возврата ссылок для составных объектов, но каково значение для объектов меньше размера указателя архитектуры? Кажется, что он менее эффективен и менее безопасен, без какого-либо преимущества.
Я предполагаю, что подобное обсуждение могло бы быть проведено для конструктора в моем примере, но этот вопрос сосредоточен на возвращаемых значениях здесь.
Это тот самый ответ , который побудил меня задать этот вопрос.