- LiFePO4 Speicher Test         
Ergebnis 1 bis 5 von 5

Thema: Anfängerfrage zu Klassen

Hybrid-Darstellung

Vorheriger Beitrag Vorheriger Beitrag   Nächster Beitrag Nächster Beitrag
  1. #1
    shedepe
    Gast
    Nun du erstellst deine Klasseninstanz ja so:

    Code:
    Auto* A = new Auto();
    A ist ein Pointer vom Typ Auto. Genauso wie
    Code:
    int * b = new int();
    ein Pointer vom Typ int ist.

    D.h. der Compiler weiß an der Stelle wenn du A verwendest: Heh das ist der Typ Auto.

    Zu deiner Frage:
    Ich gehe davon aus du hast in deiner Klasse Auto eine Methode namens "reifendruck" die ein Attribut der Klasse Aut namens "reifendruck" erhöht. (Btw. Bitte benenne Methoden danach was sie machen. Also z.B erhoeheReifendruck())
    Nun machst du die Aufrufe:
    Code:
    Auto* auto1 = new Auto();
    Auto* auto2 = new Auto();
    auto1->reifendruck();
    auto2->reifendruck();
    Was passiert dabei im Hintergrund:
    1. Du arbeitest jeweils auf einer eigenen Instanz der Klasse Auto. D.h. der Compiler hat beim Aufruf "Auto* auto1 = new Auto()" extra Speicherplatz für die Attribute der neuen Instanz der Klasse Auto reserviert. Deshalb muss man danach mit delete auch den Speicher wieder freigeben.
    2. Wenn du nun aufrufst "auto1->reifendruck();" Weiß der Compiler zum einen: Das ist der Typ Auto, diese Klasse hat eine Methode "reifendruck". Zum anderen weiß der Compiler: Das ist die Instanz "auto1". Also muss ich die Methode reifendruck im Kontext der Daten von auto1 aufrufen.

    Also eine kurze Zusammenfassung:
    Wenn du zwei Instanzen erstellst und in Methoden der Klasse auf Instanzvariablen (Attribute) zugreifst, dann änderst du nur die Attribute der ausgewählten Instanz.
    Wenn du Instanzübergreifend eine Variable haben willst (Wovon in 99,99% der Fälle abzuraten ist, und die Notwendigkeit einer solchen Variable auf eine schlechte Architektur schließen lässt) kannst du die Variable statisch als Klassenvariable anlegen. D.h. diese existiert innerhalb deines Programms nur einmal und alle Methoden die auf diese zugreifen Ändern diese eine Variable.

    @Ceos Das ist nur indirekt eine Sache des Scopes meiner Ansicht nach
    Ein Sache des Scopes wäre eher sowas:
    Code:
    int main(void)
    {
        int a = 0;
        { //Scopes werden durch Klammern  markiert (Auch die {} der int main(void) sind ein Scope)
           a= 100;
           int b = 10;
           std::cout << b << std::endl;
           std::cout << a << std::endl; //Funktioniert
        } //Wir verlassen den Scope
        std::cout << b << std::endl; //Gibt compiler fehler
    
    }

  2. #2
    Erfahrener Benutzer Robotik Einstein
    Registriert seit
    11.12.2007
    Ort
    weit weg von nahe Bonn
    Alter
    40
    Beiträge
    3.416
    ich weis auch nicht was mein Hirn da fabriziert hat mit den Scopes asl ich es getippt habe ... aber ich Empfangd es dennoch als eine brauchbare Lektion und hab es nicht entfernt XD

    Der eigentlich brauchbare Teil kam ja danach :P
    Es gibt 10 Sorten von Menschen: Die einen können binär zählen, die anderen
    nicht.

  3. #3
    Ischum
    Gast
    Danke an euch, vorallem an shedepe für die ausführliche Erklärung!

Ähnliche Themen

  1. Übergeben von Klassen
    Von FlorianKr im Forum PC-, Pocket PC, Tablet PC, Smartphone oder Notebook
    Antworten: 0
    Letzter Beitrag: 05.06.2016, 17:06
  2. Multithread in C++ in Klassen
    Von FlorianKr im Forum PC-, Pocket PC, Tablet PC, Smartphone oder Notebook
    Antworten: 6
    Letzter Beitrag: 27.04.2016, 15:08
  3. Warum keine Klassen für Ein-/Ausgabe?
    Von p_mork im Forum C - Programmierung (GCC u.a.)
    Antworten: 3
    Letzter Beitrag: 17.03.2007, 14:42
  4. (LEGO MINDSTORMS) lejos Klassen Facharbeit
    Von George Dorn im Forum Allgemeines zum Thema Roboter / Modellbau
    Antworten: 0
    Letzter Beitrag: 01.03.2006, 16:29
  5. Anfängerfrage
    Von Kuehner im Forum PIC Controller
    Antworten: 12
    Letzter Beitrag: 27.08.2005, 20:23

Benutzer, die dieses Thema gelesen haben: 0

Derzeit gibt es keine Benutzer zum Anzeigen.

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •  

Solar Speicher und Akkus Tests