Klassen/Class in C++ ? Verständnis Problem !



  • CKonto::CKonto(unsigned int Kontonummer, double Kontostand, const string& Inhaber) // Konstruktor
    { 
       m_Kontonummer = Kontonummer; // Die Membervariable m_Kontonummer bekommt den werd der Variable Kontonummer
       m_Kontostand  = Kontostand; // Die Membervariable m_Kontostand bekommt den werd der Variable Kontostand
       m_Inhaber     = Inhaber; // Die Membervariable m_Inhaber bekommt den werd der Variable Inhaber
    

    ... aber hier bin ich doch nicht mehr in der Klasse, oder .... ?

    Gruß
    Thiemo



  • Hallo

    CKonto::CKonto(unsigned int Kontonummer, double Kontostand, const string& Inhaber) // Konstruktor
    { 
       m_Kontonummer = Kontonummer; // Die Membervariable m_Kontonummer bekommt den werd der Variable Kontonummer
       m_Kontostand  = Kontostand; // Die Membervariable m_Kontostand bekommt den werd der Variable Kontostand
       m_Inhaber     = Inhaber; // Die Membervariable m_Inhaber bekommt den werd der Variable Inhaber
    

    Das ist doch eine Memnberfunktion der Klasse, also hat dies auch Zugriff auf die Variablen der Klasse.

    chrische



  • CKonto::CKonto(unsigned int Kontonummer, double Kontostand, const string& Inhaber)

    Wie genau muss ich diese Zeile verstehen ?

    Das erste CKonto ist der Klassenname ?

    mit dem 2. CKonto werden Kontonummer, Kontostand,.... zugewiesen ?

    Gruß Thiemo



  • Hallo

    Das erste CKonto steht für den Namen der Klasse.
    Der Zweite Name steht für den Namen der Funktion. In diesem Fall der konstruktor. das erkennt amn daran, dass der Name der Funktion gleich ist mit dem Namen der Klasse. Die Variablen in der Klammer sind die Parameter, die dem Konstruktor mitgegeben werden.

    chrische



  • chrische5 schrieb:

    Hallo

    Das erste CKonto steht für den Namen der Klasse.
    Der Zweite Name steht für den Namen der Funktion. In diesem Fall der konstruktor. das erkennt amn daran, dass der Name der Funktion gleich ist mit dem Namen der Klasse. Die Variablen in der Klammer sind die Parameter, die dem Konstruktor mitgegeben werden.

    chrische

    Also sind die Variablen in der Klammer, die Parameter aus private. Oder ...



  • Hallo Chrische5

    Bin gleich wieder im netz. Muß kurz was essen.

    gruß
    Thiemo



  • Hallo

    Thiemo schrieb:

    Also sind die Variablen in der Klammer, die Parameter aus private.

    Nein. Die Variablen in der Klammer werden der Klasse übergeben und du übergibst diese Variabelen mit

    m_Kontonummer = Kontonummer; 
    m_Kontostand  = Kontostand;
    m_Inhaber     = Inhaber;
    

    den Memebervariablen der Klasse. Du könntest die Werte in der Klammer aber auch noch bearbeiten:

    m_Kontonummer = Kontonummer + 10; 
    m_Kontostand  = Kontostand + 10; 
    m_Inhaber     = Inhaber + "Hallo";
    

    chrische



  • Dann ist also "m_Kontonummer" in private und übergibt seinen Wert mit dem Befehl: m_Kontonummer = Kontonummer; an die Variable: "Kontonummer".
    Richtig ???



  • Hallo

    Thiemo schrieb:

    Dann ist also "m_Kontonummer" in private und übergibt seinen Wert mit dem Befehl: m_Kontonummer = Kontonummer; an die Variable: "Kontonummer".
    Richtig ???

    Leider nicht ganz:
    m_Kontonummer ist eine Memebervariable deiner Funktion (deswegen auch das m_) und mit der Zeile m_Kontonummer = Kontonummer wird der Wert von Kontonummer an m_Kontonummer zugewiesen und nicht andersherum.

    chrische



  • Hmm tut mir ja leid, aber das stimmt nicht ganz!

    m_Kontonummer ist eine Memebervariable deiner Funktion

    Nein, es ist eine Membervariable deiner Klasse! und Kontonummer ist eine Variable der Funktion---



  • Hallo

    (D)Evil schrieb:

    Hmm Nein, es ist eine Membervariable deiner Klasse! und Kontonummer ist eine Variable der Funktion---

    Du hast natürlich Recht und genau das meinte ich auch.

    chrische



  • Ich habs leider "IMMER NOCH NICHT" kappiert. Sorry, daß ich Euch so nerve.
    Aber...
    Was genau bzw. welcher Befehl genau erlaubt mir das Zugreifen auf private ?



  • Hallo

    Also noch einmal langsam. Das Schlüsselwort private bedeutet, dass nur Memberfunktionen der Klasse auf diese Variablen oder Funktionen (die private deklariert sind) zugreifen dürfen.

    class Konto
    {
    public:
    int m_GetKontoStand(void) const;
    void m_SetKontoStand(const p_iNeuerKontoStand)
    {
    m_iKontoStand = p_iNeuerKontoStand;
    }
    private:
    int m_iKontoStand;
    };
    

    Wenn du jetzt eine Insatnz dieser Klasse anlegst, (siehe anderer Thread) dann passiert folgendes:

    Konto my_Konto //Insatnz wird angelegt
    my_Konto.m_iKontostand = 500; //Fehler, weil du auf private Memebervariable zugreifst
    my_Konto.SetKontoStand(500); //jetzt setzt du die private Variable auf 500
    

    Du kannst also, wenn du eine Instanz der Klasse erzeugt hast nur noch auf Funktionen oder Variablen zugreifen, die nicht private deklariert sind.

    chrische


Anmelden zum Antworten