open close principle



  • hallo

    Ich benutze gerade das "open close principle" und habe dazu eine Frage.

    class A
    {
        public:
            int a;
            int b;
            int c;
    }
    

    Ich habe das Prinzip in einen Tutorial gelernt das allerdings für Java bestimmt ist. Sollte ich die Werte gleich Initialisieren mit einen Konstruktor ?

    Und muss ich so etwas eigentlich auch bei std Klassen machen ? (String z.b)



  • Was hat dein Code mit dem open-closed Principle zu tun?

    Du mußt natürlich im Konstruktor alle Member entsprechend dem Design der Klasse initialisieren. Insbesondere die POD-Typen (wie z.B. int) mußt du sinnvoll belegen (da ansonsten dort evtl. uninitialisierte, d.h. Zufallswerte, drin stehen). Bei allen Klassen mit einem Standardkonstruktor (wie z.B. std::string) wird dieser selbständig aufgerufen.

    Du solltest aber auch in C++ den Unterschied zwischen

    A a;
    

    und

    A a = A();
    // "A a()" ist dagegen einfach eine Deklaration einer Funktion a (mit Rückgabetyp A)
    

    kennen (analog für Allokation auf dem Freispeicher mittels new).
    Bei letzterem werden auch POD-Typen default-initialisiert, d.h. mit 0 (Null).


Log in to reply