= Operator bei Klassen



  • Hallo!

    Angenommen ich hab eine Klasse die nur aus vorhanden Datentypen wie int, long usw. besteht.
    Muss ich hierfür den Zuweiungsoperator selbst überladen oder klappt das in jedem Falle automatisch?

    Was passiert wenn die Klasse als Attribut eine weitere Klasse enthält, werden die dann auch einfach per Zuweisungsoperator zugewiesen?



  • Nein. In dem Falle ist es kein Problem. Der Compiler wird dir den = - Operator richtig implementieren.
    Gefährlich wird das ganze erst, wenn du Speicher dynamisch anforderst. Da macht der Compiler dir ebenfalls eine Kopie des Zeigers, den die Klasse hält, was nicht das ist, was du willst. Du möchtest in dem Falle eher neuen Speicher anfordern, oder andernfalls ev. etwas mit Referenz Counting machen.



  • dsifijsf schrieb:

    Was passiert wenn die Klasse als Attribut eine weitere Klasse enthält, werden die dann auch einfach per Zuweisungsoperator zugewiesen?

    Ja, sofern für diese Klasse ein öffentlicher Zuweisungsoperator definiert ist. Also z.B. bei Standardklassen wie std::string brauchst du dir keine Sorgen zu machen, die werden richtig kopiert und zugewiesen. Bei char* wirds schon mühsamer...

    Zuweisungsoperatoren werden übrigens nicht für Klassen mit konstanten Membern oder Referenzen generiert, weil diese nicht zugewiesen werden können. Normalerweise sollte dann vom Compiler eine Warnung erscheinen.


Log in to reply