Скажите, пожалуйста, есть ли какая-то видимая разница в работе 2-х функций?
int & func1(int & b)
{
return b;
}
int func2(int & b)
{
return b;
}
С объектами классов я разобрался (про создание копий объектов, работу конструкторов копирования и деструкторов).
Как я понял, в func2 при возврате значения будет создаваться временная копия объекта и удаляться. В func1 этого происходить не будет.
Это как-то влияет на работу программы?
Немножко побуду Капитаном Очевидность. Из первой функции вы возвращаете ссылку на int, из второй - просто int. С результатом первой функции вы можете работать как со ссылкой (Кэп не даст соврать), в частности, использовать его как lvalue.
Скажем, вы можете сделать так:
int & func1(int & b)
{
return b;
}
int func2(int & b)
{
return b;
}
int main() {
int i = 10;
// можно инкрементить результат выполнения функции
// выглядит странновато, однако работает
cout << func1(i)++ << endl; // выведет 10
// а тут можно увидеть результат предыдущего инкремента
cout << i << endl; // выведет 11
return 0;
}
Кофе для программистов: как напиток влияет на продуктивность кодеров?
Рекламные вывески: как привлечь внимание и увеличить продажи
Стратегії та тренди в SMM - Технології, що формують майбутнє сьогодні
Выделенный сервер, что это, для чего нужен и какие характеристики важны?
Современные решения для бизнеса: как облачные и виртуальные технологии меняют рынок
Использую строку u32stringКак выполнить преобразование uppercase, то есть маленькие символы преобразовать в большие?
Что делать, если QT Creator под windows не находит файл проекта (pro) и в лог постройки пишет следующее: