Vorinitialisieren



  • Hi,

    welche möglichkeiten gibt es denn einer Variable einen Startwert zu geben den man dann Vortlaufend verändern kann??

    ich mache es die ganze zeit in dem ich eine public Variable habe und die dann jedes mal einfach so verändern kann. Das ist doch aber nicht wirklich das wahre.

    kann man das irgendiwe anders lösen...

    Ctor::Ctor() :var(0)
    {}
    

    da wird der Wert ja immer wieder 0 gesetzt ??? 😕 😕

    gruß Alp



  • Die Variable wird nur bei der Erzeugung eines Objekts auf Null gesetzt und auch
    nur für dieses eine.

    Ausserdem muss diese dazu nicht "public" sein, da hier innerhalb der Klasse zugegriffen wird, funktioniert es mit "private" genauso.

    So wie ich's verstanden hab, willst du eine Art "Klassenvariable",
    also eine Variable, auf die alle Objekte drauf Zugriff haben.

    Dazu muss die entsprechende Membervariable statisch sein:

    class foo
    {
    public:
       foo();
       ~foo()
    
    private:
       static int numberOfInstances;
    };
    
    // initialisieren
    int foo::numberOfInstances = 0;
    
    foo::foo()
    {numberOfInstances++;}
    
    foo::~foo()
    {numberOfInstances--;}
    


  • Ctor::Ctor():var(0)
    {}
    ist der Konstruktor der Klasse Ctor. Wenn du ein Objekt definierst wird beim erstellen var auf 0 gesetzt.
    NUR BEIM ERSTELLEN DES OBJEKTS

    wenn du var privat definierst kannst ja ne Elementfunktion machen die var verändert.
    void Ctor::ChangeVar(int Zahl)
    {
    var=Zahl;
    }

    aufruf im Pogramm wäre dann

    Objektname.ChangeVar(5);//var=5
    


  • anonymus schrieb:

    Die Variable wird nur bei der Erzeugung eines Objekts auf Null gesetzt und auch
    nur für dieses eine.

    Ausserdem muss diese dazu nicht "public" sein, da hier innerhalb der Klasse zugegriffen wird, funktioniert es mit "private" genauso.

    So wie ich's verstanden hab, willst du eine Art "Klassenvariable",
    also eine Variable, auf die alle Objekte drauf Zugriff haben.

    Dazu muss die entsprechende Membervariable statisch sein:

    class foo
    {
    public:
       foo();
       ~foo()
    
    private:
       static int numberOfInstances;
    };
    
    // initialisieren
    int foo::numberOfInstances = 0;
    
    foo::foo()
    {numberOfInstances++;}
    
    foo::~foo()
    {numberOfInstances--;}
    

    so habe ich es die ganze zeit gemacht ... hab gedacht das wäre irgendwie "unschöner" stil oder so ähnlich ...

    anke und GRUSS



  • ich hätte da noch ne Frage 😕

    wie verändert man denn nachträglich einen const Wert??

    alos zB im Zuge eines überladenen Operators.
    Beim konstruktor geht es ja über die Initialisierungsleiste...

    kann man das denn zB anders überhaupt machen ??? doch eher nicht??

    Gruß



  • Dreimal darfst du raten wofür const da ist 🙄 .



  • hehe ja stimmt naja erst überlegen dann ma´chen!!!


Anmelden zum Antworten