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

Klassen & Speicherverwaltung

  • \LaTeX
  • 6. Februar 2005 um 11:48
  • Unerledigt
  • \LaTeX
    7
    \LaTeX
    Mitglied
    Punkte
    425
    Beiträge
    66
    • 6. Februar 2005 um 11:48
    • #1

    Hallo Leute..
    Ich entwickle g'rad eine kleine Math-Library und frage mich Folgendes: Angenommen wir haben eine Klasse:

    Code
    class Vector3
    {
    ...
    // Deklaration als class member.
    Vector3 &operator+=(Vector3 const &vect);
    ...
    };
    ...
    // Definition als Methode.
    Vector3 &Vector3::operator+=(Vector3 const &vect)
    {
    ...
    }
    Alles anzeigen

    Beim Instanzieren der Klasse 'Vector3' wird ja Speicher fuer alle Class-Members angefordert (also fuer Klassen- bzw. Objekt-Variablen und fuer die Methoden; stimmts?). Wenn ich nun mehrere Objekte vom Typ Vector3 anfordere, wird dann der Speicherplatz fuer die selben Methoden mehrmals angefordert? Also:

    Code
    operator+=() fuer Objekt 1 // = ein Speicherabschnitt
    operator+=() fuer Objekt 2 // = ein anderer Speicherabschnitt
    operator+=() fuer Objekt 3 // = wieder ein anderer Speicherabschnitt
    ...

    Oder wird nur einmal der Speicher fuer Methoden angefordert und immer wieder verwendet? Also:

    Code
    operator+=() fuer Objekt 1
    operator+=() fuer Objekt 2 => referenziert auf 'operator+=() fuer Objekt 1'
    operator+=() fuer Objekt 3 => referenziert auf 'operator+=() fuer Objekt 1'
    ...

    Ich hoffe, dass ich mein Problem (irgendwie) verstaendlich erklaert habe, wenn nicht bitte ruehren.

    Dank im Voraus fuer jede Hilfe..
    ciao..

  • Plantschkuh!
    24
    Plantschkuh!
    Mitglied
    Reaktionen
    163
    Punkte
    6.173
    Beiträge
    1.181
    • 6. Februar 2005 um 12:30
    • #2
    Zitat von \LaTeX

    Oder wird nur einmal der Speicher fuer Methoden angefordert und immer wieder verwendet?


    Ja, die Methoden liegen nur einmal im Speicher. Für jede Klasse gibt es eine Tabelle mit Pointern zu ihren Methoden, die wird zur Auflösung der Aufrufe verwendet.

    *plantsch*

  • Ringding
    11
    Ringding
    Mitglied
    Reaktionen
    12
    Punkte
    1.237
    Beiträge
    244
    • 6. Februar 2005 um 12:31
    • #3

    Aber nur für virtuelle Methoden gibt's diese Tabelle. Die restlichen Methoden werden ganz einfach statisch gelinkt, wie normale C-Funktionen auch. Außer sie werden inlined.

  • Maximilian Rupp 27. Dezember 2024 um 12:06

    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