Привет, вопрос есть по поводу ссылок.
Допустим, мы передаём в функцию std::vector размером 10000 элементов.
int foo(vector v_copy){}
int main()
{
vector<int> v(10000);
foo(v);
}
При передаче чего-то в функцию как мне кажется происходит подобное: v_copy = v, то есть содержимое v копируется в новый вектор v_copy.
Теперь передадим по ссылке
int foo(vector& v_copy){}
int main()
{
vector<int> v(10000);
foo(&v);
}
Получается vector& v_copy = &v. Теперь вектор v_copy ссылается на вектор v, т.е. имеет его
адреса.
А если у нас будет такой код
const vector<int>& foo()
{
vector <int> v(10000);
return v;
}
int main()
{
vector<int>& v = foo();
}
То есть чтобы избежать копирования возвращаемого значения из функции мы тут используем опять же ссылку? Это же по идеи единственное для чего использовать ссылочный тип функции/метода?