1. Dashboard
  2. Forum
    1. Unerledigte Themen
  3. Mitglieder
    1. Letzte Aktivitäten
    2. Benutzer online
    3. Team-Mitglieder
    4. Trophäen
    5. Mitgliedersuche
  4. Tutorial Bereich
  • Anmelden
  • Registrieren
  • Suche
Dieses Thema
  • Alles
  • Dieses Thema
  • Dieses Forum
  • Seiten
  • Forum
  • Lexikon
  • 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
  • subatomic
    5
    subatomic
    Mitglied
    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

    "in 1000 years, we will be living machines, or dead gods"

  • jjan
    6
    jjan
    Mitglied
    Reaktionen
    8
    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.

    Eins Zwei Gras Bär Hund Vier Muh Macht Die Kuh

  • subatomic
    5
    subatomic
    Mitglied
    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?

    "in 1000 years, we will be living machines, or dead gods"

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

    ganz genau!

    Viele Menschen sind zu gut erzogen, um mit vollem Mund zu sprechen,
    aber sie haben keine Scheu, es mit leerem Kopf zu tun.
    (Orson Welles)

  • Maximilian Rupp 27. Dezember 2024 um 12:08

    Hat das Thema aus dem Forum Programmieren nach Entwicklung verschoben.

Jetzt mitmachen!

Sie haben noch kein Benutzerkonto auf unserer Seite? Registrieren Sie sich kostenlos und nehmen Sie an unserer Community teil!

Benutzerkonto erstellen Anmelden

Benutzer online in diesem Thema

  • 1 Besucher

Rechtliches

Impressum

Datenschutzerklärung