@David:
na okay ich bin ja nicht so
@Gast:
Nun also fangen wir mal an mit BOOL vs. bool. Der Typ bool ist seit der C98 serie Standard geworden vorher war es einfach nur ein selbstdefinierter Typ wie z.B. der hier:
|
Quellcode
|
1
2
3
|
typedef unsigned int bool;
const bool false = 0;
const bool true = 1;
|
Daran hat sich seit C98 (oder war es ein paar Serien Tiefer? Hm weis ich grade nicht, Kaffee ist leer) auch nix geändert, die Bitzahl bleibt die selbe sowie das Handling. Naja nur die Win32API muss (leider mal wieder) anders arbeiten und sich nicht soooo genau an den Standard halten.
Der BOOL (FALSE und TRUE) sind also Kein ISO-Standard von C++ sondern um ganz ehrlich zu sein: ein Fragment aus Win3.11 der (zum glück) nicht Standardtisiert wurde. sondern eher bool. BOOL ist glaube ich 32bit und bool nur 16bit. Der Unterschied liegt auf der Hand, BOOL ist schneller aber braucht mehr Speicherplatz. bool ist etwas langsamer aber braucht weniger. Für BOOL muss man die Windows.h includieren und bool ist ein Buildin-type (Also in den Compiler eingebauter typ).
Da BOOL kein Standard ist wird er in OOP Quellcodes SEHR ungerne gesehen sondern lieber bool.
Zu dem was David gemacht hat in seiner Engine sag ich mal nix
Aber ich glaub er hatte auch seine Gründe, jedoch heißt das nicht, das es die Beste Lösung ist
Zum static:
static ist ein Fragment aus ANSI C Zeiten kann jedoch wie alles aus ANSI C in C++ mit eingebaut werden (wird jedoch auch net gerne gesehen, denn C und C++ Mischen gilt als "Unschön").
|
Quellcode
|
1
2
3
4
5
|
// ANSI C Methode:
static int i = 0;
// C++ Methode:
namespace { int i=0; }
|
In C++ wird static durch einen sog. UnnamedNamespace ersetzt. um das Mischen zu unterbinden. Wenn man ein reihnes C++ Programm gecodet hat, kann man z.B. die Standard ANSI C lib nicht mit ins programm stopfen wodurch das Programm derbst klein werden kann.
Und nun zu Static-Klassen:
Static-Klassen werden durch Mehrere OOP Gesetze wie z.B. das OCP verboten, da eine Statische Klasse als "Globale Variable" gedeutet wird laut OCP. Und Globale Variablen sind verboten laut diesem Gesetz. Es gibt nun mehrere Möglichkeiten, A: Singleton oder B: Eine normale Klasse.
Naja also ich bin ehrlich, ich würde einige kennen, die dir schon wegen dem BOOL dir den code um die ohren werfen würden und bei statischen klassen oder Globalen Variablen einen Nervenzusammenbruch deswegen bekommen, und DIE sind noch mehr von der OOP besessen als ich
@David:
bist du zufrieden mit mir? :angel: :angel: :angel: