#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
從我main
函數接收到我的字符串s
參考。當我在C++中爲對象賦值時,會發生什麼?
我的問題是,什麼方面做:
std::string p = s;
是否淺複製引用,並把它放在p
,從而擊敗首先使用參考的目的是什麼?
還是(p
)只是作爲參考?
的_lvalue_的拷貝構造函數將被調用,如果它是一個_shallow copy_取決於它的實現。目前還不清楚你究竟在問什麼。 –
如果寫入時複製字符串被禁用,它將執行深層複製 – James
忘記「淺」或「深」複製。它只是複製引用引用的對象。複製的語義是爲被複制的對象的類型定義的(在這種情況下,是'std :: string'。) – juanchopanza