Wie meinst'e denn das?
Konstanten haben ja schon einen Wert ... den braucht man doch nicht erst im Constructor zu setzen?
Zumindest in C++ müssen sie nicht von Anfang an einen Wert haben. Beispiel:
Interface:
Code:
class TMyClass {
public:
const int someIntConst;
TMyClass(const int someParam);
TMyClass(void);
};
Implementation:
Code:
TMyClass::TMyClass(const int someParam) : someIntConst(someParam) {
// Hier geschieht nichts
}
TMyClass::TMyClass(void) : someIntConst(42) {
// Hier geschieht immer noch nichts
}
__fastcall TForm1::TForm1(TComponent* Owner)
: TForm(Owner)
{
TMyClass myNormalInstance;
ShowMessage(myNormalInstance.someIntConst);
TMyClass myCustomInstance(55);
ShowMessage(myCustomInstance.someIntConst);
}
Die erste Messagebox gibt 42 aus, die zweite 55. Die beiden Instanzen haben unterschiedliche Werte in ihren Konstanten.
Ich finde das macht schon Sinn, denn oft legt man nur einmal im Konstruktor in Abhängigkeit der Parameter etwas fest und das soll für die gesamte Lebenszeit des Objekts so bleiben. In Delphi müssen alle Instanzen der gleichen Klasse in einer Konstante allesamt den gleichen Wert haben.
Den Compilerschalter habe ich auch schon gesehen. Aber das lasse ich besser so wie es ist