Bei der Verwednung des new
-Operators muß dieser die Größe
des Objektes kennen, für das Speicherplatz alloziert wird. Dies geschieht
über den sizeof
-Operator. Dieser liefert für einen Typ oder einen
Bezeichner die Größe des Speicherplatzes, der belegt wird zurück. Dabei
ist die Größe al Vielfaches der Größe eines char
definiert.
Hier ein paar Beispiele für den sizeof
-Oparator. Man beachte, daß
die Größenangaben auf verschiedenen Systemen unterschiedlich sein
können.
cout << " A : " << sizeof(A) << endl; // A : 2
A a[3];
cout << "char : " << sizeof(char) << endl; // char : 1
cout << "char& : " << sizeof(char&) << endl; // char& : 2
cout << "char* : " << sizeof(char*) << endl; // char* : 2
cout << "char[10] : " << sizeof(char[10]) << endl; // char[10] : 10
cout << " A& : " << sizeof(A&) << endl; // A& : 2
cout << " A* : " << sizeof(A*) << endl; // A* : 2
cout << " A[10] : " << sizeof(A[10]) << endl; // A[10] : 20
cout << ä : " << sizeof(a) << endl; // a : 6
Für spezielle Anwendugen kann es sinnvoll sein den new
-Operator
klassenspezifisch zu überladen. Hier ist dann die Benutzung des
sizeof
-Operators notwendig. Auch bei einer C-konformen Allokation
des Speichers wird die Größe eines Objektes benötigt. Diese Allokation
sollte aber in C++-Programmen nicht benutzt werden, da es sonst zu
Schwierigkeiten kommen kann.