Frage zu Klassenerstellung



  • Du könntest es static machen. Aber wieso willst du ihn nicht im CTor?

    EDIT: Schon das zweite Mal zu lahm 😃



  • Achwas, eben haben wir uns doch gut ergänzt. Ansonsten Redundanz durch Mehrfachantwort zur Verifizierung der Aussage. 😉



  • Danke für die Antworten!

    Was meinst du denn mit CTor?

    Noch eine Frage zur Standardsichtbarkeit von C++:

    Sind die Attribute und Variablen wenn man keine Sichtbarkeit angibt standardmäßig mit private deklariert?

    Bei Java ist ja dann die Sichtbarkeit "Package local" (ich glaube das bedeutet dass man innerhalb des packages die Sichtbarkeit "public" hat, oder?)

    Danke!

    Gruß



  • RR23 schrieb:

    Was meinst du denn mit CTor?

    Constructor.

    RR23 schrieb:

    Sind die Attribute und Variablen wenn man keine Sichtbarkeit angibt standardmäßig mit private deklariert?

    Bei class sind sie private . Bei struct aber sind sie public . Genau wie bei der Vererbung...



  • Eine solche Möglichkeit zur Initialisierung ist übrigens für C++0x geplant:
    http://www2.research.att.com/~bs/C++0xFAQ.html#member-init



  • Das was du im Ctor machst ist keine Initialisierung, sondern eine Zuweisung. Wenn dann doch bitte richtig! Komisch das es hier noch niemand korrigiert hat?

    Was du gemacht hast ist folgendes: es wird das Objekt kreiert, samt Member-Variablen. Bei primitiven Typen mit einem undefinierten Wert! Und dann im Ctor-Scope wird verspätet der Wert 6 zugewiesen.

    Wenn du initialisieren willst, mußt du das in der Initialisierungsliste tun:

    class Testen {
    
        int zahl1, zahl2;
    
    public:
        Testen() : zahl2(6)
        {
        }
    };
    

    Hier wird gleich der Wert 6 beim Anlegen von zahl2 gesetzt. Das wird besonders wichtig, wenn du später keine primitiven Datentypen nutzt, sondern Strukturdaten bzw. Objekte. Dann wird der Unterschied sogar Auswirkungen im Verhalten zeigen!



  • thomas___ schrieb:

    Eine solche Möglichkeit zur Initialisierung ist übrigens für C++0x geplant:
    http://www2.research.att.com/~bs/C++0xFAQ.html#member-init

    Ich sehe nicht ganz den Nutzen einer solchen Konstruktion. Wenn ein für alle Objekte sichtbarer, konstanter, privater Wert vorhanden ist, braucht man ihn doch nicht für JEDES Objekt zu erstellen (ich weiß jetzt nicht, ob dies in der Praxis und im Maschinencode so gehandhabt wird, aber die Syntax impliziert dies doch recht stark).

    Allerdings wäre es schön, so etwas wie einen statischen Konstruktor in C++ zu haben, wie in C#. Oder bin ich mal wieder nicht aktuell und gibt es das bereits?


  • Mod

    Glühbirne schrieb:

    thomas___ schrieb:

    Eine solche Möglichkeit zur Initialisierung ist übrigens für C++0x geplant:
    http://www2.research.att.com/~bs/C++0xFAQ.html#member-init

    Ich sehe nicht ganz den Nutzen einer solchen Konstruktion. Wenn ein für alle Objekte sichtbarer, konstanter, privater Wert vorhanden ist, braucht man ihn doch nicht für JEDES Objekt zu erstellen (ich weiß jetzt nicht, ob dies in der Praxis und im Maschinencode so gehandhabt wird, aber die Syntax impliziert dies doch recht stark).

    Der Wert ist nicht konstant!



  • SeppJ schrieb:

    Der Wert ist nicht konstant!

    Mein innerer Parser scheint wohl nicht zu funktionieren ;), denn ich kann deinen Satz nicht auslösen! Ist er eine Berichtigung? Eine Erklärung?



  • Glühbirne schrieb:

    SeppJ schrieb:

    Der Wert ist nicht konstant!

    Mein innerer Parser scheint wohl nicht zu funktionieren ;), denn ich kann deinen Satz nicht auslösen! Ist er eine Berichtigung? Eine Erklärung?

    Naja, ein Widerspruch zu:

    Glühbirne schrieb:

    Wenn ein für alle Objekte sichtbarer, konstanter, privater Wert vorhanden ist,

    Die Variable wird zwar immer mit dem gleichen Wert initialisiert, kann aber jederzeit geändert werden.



  • manni66 schrieb:

    Die Variable wird zwar immer mit dem gleichen Wert initialisiert, kann aber jederzeit geändert werden.

    Ach so ... na, das stimmt wohl. Wieder was gelernt, danke! 🙂



  • [OT]
    Viel zu spät hin oder her - es ist als Lernender / Anfänger
    ein schönes Gefühl, wenn man die Antwort gewusst hätte.
    *feststell*
    🙂
    [/OT]


Anmelden zum Antworten