Скажите, пожалуйста, есть ли какая-то видимая разница в работе 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;
}
Основные этапы разработки сайта для стоматологической клиники
Продвижение своими сайтами как стратегия роста и независимости