这是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!"); 它...
在C++中,当函数返回一个std::string对象时,由于std::string的特性和编译器的优化(如返回值优化和移动语义),通常不会发生显式的深拷贝。相反,编译器会尽可能优化代码,以避免不必要的拷贝操作。因此,可以说C++返回std::string时,其行为通常不是简单的深拷贝,而是依赖于编译器的优化和std::string的实现细节。 综上...