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).