Ich habe das Gefühl, dass diese Frage so grundlegend ist, dass sie irgendwo gestellt werden muss, aber ich scheine keine Antwort darauf finden zu können.
Angenommen, ich habe diesen Code:
//class member function
std::map< std::string, std::string > myMap;
const std::map< std::string, std::string >& bar()
{
return myMap;
}
void myFunc( std::map< std::string, std::string >& foo1 )
{
foo1 = bar();
std::map< std::string, std::string >& foo2 = bar();
}
Mein Verständnis ist, dass, wenn ich anfangen, mit foo2, da foo2 ein Verweis auf die gleiche Instanz als was bar() zurückgibt, alles, was ich mit foo2 tun wird in myMap reflektiert werden. Aber was ist mit foo1? Bekommt foo1 eine Kopie von myMap oder verweist es ebenfalls auf die gleiche Instanz, die bar() zurückgibt? In der C++-Standardbibliothek heißt es, dass der Zuweisungsoperator für std::map die Elemente kopiert, aber bedeutet das dann, dass der Zuweisungsoperator in der Deklaration von foo2 nicht wirklich aufgerufen wird?
Gracias.