我想知道我是否误解了一些东西:复制构造函数是否std::string
不会复制其内容?
string str1 = "Hello World";
string str2(str1);
if(str1.c_str() == str2.c_str()) // Same pointers!
printf ("You will get into the IPC hell very soon!!");
这将打印“你很快就会进入 IPC 地狱!!” 这让我很恼火。
这是正常的行为std::string
吗?我在某处读到它通常会进行深层复制。
但是,这可以按预期工作:
string str3(str1.c_str());
if(str1.c_str() == str3.c_str()) // Different pointers!
printf ("You will get into the IPC hell very soon!!");
else
printf ("You are safe! This time!");
它将内容复制到新字符串中。