Einfache Zuweisung (C++)

Der einfache Zuweisungsoperator (=) bewirkt, dass der Wert des zweiten Operanden, im Objekt gespeichert, das durch den ersten Operanden angegeben wird.Wenn beide Objekte aus den arithmetischen Typen sind, wird der rechte Operand den Typ des Links, vor dem Speichern des Werts konvertiert.

const von Objekten und flüchtige Typen können den L-Werten von Typen zugewiesen sind, die gerade flüchtig sind oder die weder Konstante noch flüchtig sind.

Zuweisung in Objekte des Klassentyps (Struktur, Union und Klassentypen) wird durch eine Funktion ausgeführt, die operator= benannt ist.Das Standardverhalten dieser Operator für Reservierungen ist, eine bitweise Kopie auszuführen. Dieses Verhalten kann jedoch mithilfe der überladenen Operatoren geändert werden.(Siehe Überladene Operatoren .)

Ein Objekt der Klasse abgeleiteter der eindeutig von einer bestimmten Basisklasse kann auf ein Objekt der Basisklasse zugewiesen werden.Die Rückseite ist nicht der Fall, da es eine implizite Konvertierung einer abgeleiteten Klasse Basisklasse jedoch nicht von einer Basisklasse zu abgeleitete Klasse vorhanden ist.Beispiele:

// expre_SimpleAssignment.cpp
// compile with: /EHsc
#include <iostream>
using namespace std;
class ABase
{
public:
    ABase() { cout << "constructing ABase\n"; }
};

class ADerived : public ABase
{
public:
    ADerived() { cout << "constructing ADerived\n"; }
};

int main()
{
    ABase aBase;
    ADerived aDerived;

    aBase = aDerived; // OK
    aDerived = aBase; // C2679
}

Zuweisungen zu Verweistypen verhalten sich so, als ob die Zuweisung des Objekts vorgenommen wurden, an den die Daten.

Ein Klassentyp Objekte ist die Initialisierung Zuweisung zu unterscheiden.Um zu veranschaulichen, z. B. unterschiedliche Zuordnung und Initialisierung sein können, sollten Sie den Code

UserType1 A;
UserType2 B = A;

Der vorhergehende Code zeigt einen Initialisierer angegeben. Er ruft den Konstruktor für UserType2 an, der ein Argument des Typs UserType1akzeptiert.Wenn der Code

UserType1 A;
UserType2 B;

B = A;

die Zuweisungsanweisung

B = A; 

kann einen der folgenden Auswirkungen haben:

  • Rufen Sie die Funktion operator= für UserType2angezeigt, vorausgesetzt operator= mit einem UserType1-Argument bereitgestellt wird.

  • Rufen Sie die Funktion UserType1::operator UserType2die explizite Konvertierung an, sofern eine solche Funktion vorhanden ist.

  • Rufen Sie einen Konstruktor UserType2::UserType2angezeigt, sofern ein solcher Konstruktor, der ein vorhandenes UserType1-Argument akzeptiert und das Ergebnis kopiert.

Siehe auch

Referenz

Ausdrücke mit binären Operatoren