1. Weiterleitung zu NetzLiving.de
  2. Forum
    1. Unerledigte Themen
  3. zum neuen Forum
  • Anmelden
  • Suche
Dieses Thema
  • Alles
  • Dieses Thema
  • Dieses Forum
  • Seiten
  • Forum
  • Erweiterte Suche
  1. Informatik Forum
  2. Webmaster & Internet
  3. Entwicklung

C++: copy-Konstruktor, =-Operator auf Klassen

    • Frage
  • subatomic
  • 13. Juli 2003 um 15:38
  • Unerledigt
Hallo zusammen,

das Informatik-Forum geht in den Archivmodus, genaue Informationen kann man der entsprechenden Ankündigung entnehmen. Als Dankeschön für die Treue bekommt man von uns einen Gutscheincode (informatikforum30) womit man bei netzliving.de 30% auf das erste Jahr sparen kann. (Genaue Infos sind ebenfalls in der Ankündigung)

Vielen Dank für die Treue und das Verständnis!
  • subatomic
    Punkte
    230
    Beiträge
    36
    • 13. Juli 2003 um 15:38
    • #1

    Wie wird man den =-Operator auf Klassen los? Irgendwie passt dessen Verwendung nicht ganz in das Konzept der OOP. Welchen Sinn macht es denn, wenn ich den Zugriff auf ein Objekt nur über öffentliche Methoden gestatte, es dann aber möglich ist alle Elementvariablen mit
    instanz2 = instanz1
    zu verändern.

    EDIT: Zugegeben, einen so eklatanten Verstoß gegen die Prinzipien der OOP stellt die Verwendung des Operators auch nicht dar. Die Elementvariablen von instanz1 können ja auch nur über die öffentlichen Zugriffsmethoden verändert werden. Daher würden durch instanz2 = instanz1 nur korrekte Werte für die Elementvariablen zugewiesen werden. Meine Frage bleibt aber trotzdem.
    Selbe Überlegungen gelten auch für den copy-Konstruktor

  • jjan
    Punkte
    293
    Beiträge
    57
    • 13. Juli 2003 um 18:05
    • #2
    Zitat von subatomic

    Wie wird man den =-Operator auf Klassen los? Irgendwie passt dessen Verwendung nicht ganz in das Konzept der OOP. Welchen Sinn macht es denn, wenn ich den Zugriff auf ein Objekt nur über öffentliche Methoden gestatte, es dann aber möglich ist alle Elementvariablen mit
    instanz2 = instanz1
    zu verändern.



    Normalerweise wird das so gelöst, dass operator=() private deklariert wird.

  • subatomic
    Punkte
    230
    Beiträge
    36
    • 13. Juli 2003 um 20:21
    • #3

    thx!

    Eine Frage hätte ich jetzt noch:
    Wenn man auf einem dynamisch erzeugten Array delete aufruft, dann sollen angeblich die Destruktoren für jedes Arrayelement mit aufgerufen werden. Sollte das auch für Arrays aus Zeigern auf Objekte gelten?
    Wenn ich das Array mit
    Klassenname **arrayname = new Klassenname *[length]
    erzeuge und mit
    delete[] (arrayname)
    lösche, dann werden die Destruktoren NICHT aufgerufen!
    Bedeutet das, auf jedes Arrayelement muß delete einzeln aufgerufen werden?

  • Bug
    Punkte
    121
    Beiträge
    23
    • 13. Juli 2003 um 20:56
    • #4

    ganz genau!

  • Maximilian Rupp 27. Dezember 2024 um 12:08

    Hat das Thema aus dem Forum Programmieren nach Entwicklung verschoben.

  1. Datenschutzerklärung
  2. Impressum