#include <iostream>
void test(std::string &s) {
std::string p = s;
std::cout << p.length() << " " << p;
}
int main() {
std::string s = "Hello world";
test(s);
return 0;
}
Таким образом, функция test
получает ссылку на мою строку s
от моей функции main
.Что происходит, когда я присваиваю объекту значение ссылки в C++?
Мой вопрос, что же эта линия сделать:
std::string p = s;
его неполную копию ссылки и поместить ли его в p
, тем самым поражение цели с помощью ссылки в первую очередь?
Или он (p
) просто действует как ссылка?
копия конструктор _lvalue_ будет называться, если это _shallow copy_ зависит от его реализации. Это довольно непонятно, о чем вы действительно спрашиваете. –
Выполняет глубокую копию, если строки с копированием на запись отключены. – James
Забудьте о «мелком» или «глубоком» копировании. Он просто копирует объект, на который ссылается ссылка. Семантика копии - это то, что определено для типа копируемых объектов (в данном случае, 'std :: string'.) – juanchopanza