Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > C/C++: Для новичков > Возвращение значения по ссылке


Автор: Albuquerque 14.10.2017, 14:33
Я не могу понять, зачем функция возвращает значение по ссылке? smile  Понимаю, что она может выступать левым операндом, но когда не требуется от нее этого, зачем возвращать значение по ссылке? В книге липпмана, му, лажойе этот прием используется постоянно и функция практически всегда правый операнд, но они не очень понятно разъяснили зачем. Почему бы мне просто не вернуть значение, если я не использую функцию как L-значение?

Автор: borisbn 16.10.2017, 10:54
Пример 1:
Код
std::cout << "one " << "two " << " three" << std::endl;

Пример 2:
Код
struct Huge {
    char x[ 1000000 ];
};

Huge foo(); // Скопирует струтуру из 1 млн. байт

Huge & foo(); // Вернёт ссылку на струтуру

Автор: Alexeis 16.10.2017, 20:58
Ссылка реализуется через указатели. Вернуть ссылку чаще всего реализуется через вернуть указатель на данные.

Автор: Albuquerque 22.10.2017, 16:24
Цитата(borisbn @ 16.10.2017,  10:54)
Пример 1:
Код
std::cout << "one " << "two " << " three" << std::endl;

Пример 2:
Код
struct Huge {
    char x[ 1000000 ];
};

Huge foo(); // Скопирует струтуру из 1 млн. байт

Huge & foo(); // Вернёт ссылку на струтуру

В общем, чтобы не копировать и тратить меньше ресурсов, да?

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)