C++, STL-String-Copy-Konstruktor - Immer eine Tiefe Kopie?

Ich habe gesehen, verschiedene widersprüchliche Verweise auf die Kopie-Konstruktor Verhalten von STL-strings in C++ und ich hatte gehofft, jemand könnte das für mich aufklären, angesichts des folgenden code-segment:

string str() { return string("this is a string"); }
//meanwhile, in some other function...
string s = str();

Macht das Objekt 's' bilden eine Tiefe Kopie des string-Objekts in der Funktion definiert 'str()'? oder ist das Objekt 's' einfaches zeigen auf den gleichen Speicherblock zugewiesen, während der string-Konstruktor-Aufruf in der 'str ()' - Funktion?

  • Es spielt keine Rolle, was das exakte kopieren der Semantik sind, weil jeder vernünftige compiler optimieren wird, alle Kopien Weg in dem oben genannten Beispiel. Und wenn aus irgendeinem Grund dies nicht möglich ist, move-Semantik sind erforderlich, um kick in.
Schreibe einen Kommentar