Instanzen einer Klasse



  • Hi.

    Ich wollt mal fragen was genau eine Instanz ist?!
    Könnt man sagen das eine Instanz eine "Kopie" einer Klasse ist?

    Bsp.

    #include <iostream>
    
    using namespace std;
    
    class CSpieler
    {
       private:
           int m_Energie;
           ....usw.
    
       public:
           int funktion();
    };
    
    int main()
    {
      int Energie;
    
      CSpieler Spieler1;   //Die Instanz ..oder?
      CSpieler Spieler2;
    
      ...usw.
    
      return 0;
    }
    

    Also der Quelltext soll jetz keinen Sinn ergeben wollt nur noch mal genau zeigen was ich meine...

    und noch eine frage... Bei C kann man doch den befehl 'system("pause");' benutzen um zu verhindern das das Program sich sofort schliesst.
    Wie mache ich das bei C++?



  • 1. Eine Instanz ist ein Objekt, ist nur ein verschiedener Ausdruck.
    2. Kannst auch mit System("Pause"); arbeiten



  • Vorden schrieb:

    1. Eine Instanz ist ein Objekt, ist nur ein verschiedener Ausdruck.

    Und das Objekt ist die Klasse? Also bestehend aus den Membervariablen und den memberfunktionen, oder hab ich da was falsch verstanden?



  • Hi,

    du kannst dir die Klasse wie eine Schablone vorstellen. Eine Instanz ist dann ein konkretes Abbild (Objekt) einer Klasse. Hier mal ein Beispiel:

    Klasse: Aktie

    Abbild/Objekt: xyz Aktie

    Die Klasse beschreibt nur Eigenschaften die ihre Objekte haben soll. Sie enthält aber keine Werte für diese Eigenschaften. Wobei man Instanz und Objekt auch als Synonym benutzen kann(glaube ich).

    Hoffe, das hilft dir ein bisschen.



  • ja danke. Also ist eine Klasse eine Vorlage für ein bestimmtes Objekt zB CSpieler und immer wenn ich jetz genau die gleichen Daten brauche mache ich mir eine Instanz um zB 2 oder mehrere Spieler zu erstellen...

    Nochmal ne frage zur Klasse: Init8ialisieren darf man in der Klasse nicht oder? da benutzt man dann lieber einen Konstruktor oder?

    Bsp:

    #include <iostream>
    using namespace std;
    
    class CSpieler
    {
    private:
       int m_Energie;
       int ....
    public:
    int funktion();
        CSpieler();  //<= Darf keinen Rückgabetyp haben oder?
    };
    
    //Konstructor
    
    CSpieler::CSpieler()
    {
       cout << "Konstruktor wurde aufgerufen" << endl;
       int m_Energie = 1500;
       cout << "Werte wurden Initialisiert" << endl;
    }
    
    int main()
    {
      ...
      ...
      ...
    }
    

    Ich hoffe das war so richtig...



  • Vorden schrieb:

    1. Eine Instanz ist ein Objekt, ist nur ein verschiedener Ausdruck.

    nur bei den codern. bei den entwerfern wird Objekt auch gerne mal als sysnonym für Klasse verwandt.



  • Gizm schrieb:

    Und das Objekt ist die Klasse?

    Nein. Du musst dir eine Klasse wie ein Kochrezept vorstellen. Eine Instanz (Objekt) davon ist dann das zubereitete Gericht.



  • Achso. Also sammel ich in einer Klasse nur "Eigenschaften" die dann, wenn ich eine Instanz "erstelle" , zu einem Objekt werden...



  • Das Wort "Instanz" hat sich so eingebürgert, ist aber Schwachsinn. Es ist eine falsche Übersetzung von dem englischen Wort "Instance" (gemeint war "Beispiel" in dem Zusammenhang). Gemeint ist immer ein Objekt.



  • Jetz hast des.
    Es is auch so, dass die Elementvariablen bei jeder Instanziierung neu erstellt werden, hingegen die Methoden der Klasse gibt es nur genau ein mal. Also kurz:
    Klasse is des was du mit class X{}; bezeichnest und Objekt, oder Instanz ist das, was du mittels des Konstruktors erzeugst, oder was durch den Befehl X TestObjekt; zum Beispiel erstellt wird.


Anmelden zum Antworten