Определении функции в C++
Для чего нужен амперсанд в определении функции? А также const в самом названии функции, в аргументах все понятно что для чего, но конкретно с названием функции не до конца понимаю.
const string & version2(string & s1, const string & s2)
{
s1 = s2 + s1 + s2;
return s1;
}
Ответы (2 шт):
Автор решения: gbg
→ Ссылка
- Возвращать ссылку.
- Возвращать константную ссылку.
Зачем надо - например, это позволяет не делать лишних копирований, а также гарантирует, что получивший такую ссылку не сможет в нее что-то записать.
Автор решения: Harry
→ Ссылка
const string & version2(string & s1, const string & s2)
^^^^^^^^^^^^^^ - Возвращаемый тип
^^^^^^^^ - имя функции
^^^^^^^^ ^^^^^^^^^^^^^^ - типы аргументов
Это функция version2, которая принимает ссылку на строку s1, ссылку на константную строку s2 (т.е. обещает не менять s2 по ходу работы), а возвращает - ссылку на константную строку, т.е. получив которую, вы не можете ее менять.