Просматривая чужой код, обратил внимание на то, что почти никто при написании геттеров не использует возврат константной ссылки на приватный член класса. Что самое странное, это касается не только проектов с длинной историей, но и относительно свежих работ. Ведь, по идее, возврат ссылки значительно менее ресурсозатратная операция, особенно если речь идет не о тривиальных объектах, а о более-менее сложных структурах.
Как вы считаете, насколько хорош нижеследующий код? Если вы считаете, что он плох, пожалуйста напишите почему. Возможно в таком подходе есть невидимые для меня "подводные камни"? Спасибо.
#include <string>
#include <iostream>
class Foo{
public:
Foo(const char* str)
: m_value(str)
{
}
const std::string& value() const{
return m_value;
}
private:
std::string m_value;
};
int main(int argc, char** argv)
{
if(argc < 1)
return -1;
Foo foo(argv[0]);
auto&& bar = foo.value();
std::cout << bar << std::endl;
/* ... */
return 0;
}