77 Stimmen

Warum funktioniert der Operator = bei Strukturen, die nicht definiert wurden?

Schauen wir uns ein einfaches Beispiel an:

struct some_struct {
   std::string str;
   int a, b, c;
}

some_struct abc, abc_copy;
abc.str = "some text";
abc.a = 1;
abc.b = 2;
abc.c = 3;

abc_copy = abc;

Dann ist abc_copy eine exakte kopieren. de abc wie ist es möglich sans Definition der =-Operator ?

(Das hat mich bei der Arbeit an einem Code überrascht )

2voto

Troubadour Punkte 13047

Der Compiler wird einige Mitglieder für Sie synthetisieren, wenn Sie sie nicht ausdrücklich selbst definieren. Der Zuweisungsoperator ist einer von ihnen. Ein Kopierkonstruktor ist ein weiterer, und Sie erhalten auch einen Destruktor. Sie erhalten auch einen Standardkonstruktor, wenn Sie keine eigenen Konstruktoren bereitstellen. Darüber hinaus bin ich mir nicht sicher, was es sonst noch gibt, aber ich glaube, dass es noch weitere gibt (der Link in der Antwort von 280Z28 deutet allerdings auf etwas anderes hin, und ich kann mich nicht mehr erinnern, wo ich ihn gelesen habe, also sind es vielleicht nur vier).

0voto

Scott M. Punkte 7188

Structs sind im Grunde eine Verkettung ihrer Komponenten im Speicher (mit einigen möglichen Auffüllungen für die Ausrichtung eingebaut). Wenn Sie einer Struktur den Wert einer anderen zuweisen, werden die Werte einfach kopiert.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X