002
07.08.2006, 16:19 Uhr
ao
(Operator)
|
Die Bedeutung von const an einer Methode ist: "Die Methode lässt das Objekt (d.h. die Klasseninstanz), an das sie gebunden ist, unverändert."
Eine static-Methode hat keine gebundene Instanz, darum hat ein const-Attribut hier keinen Zweck.
Leider kann man statische Methoden trotzdem in Instanzmember-Syntax aufrufen:
C++: |
class C { public: static void m () { } };
int main (void) { C c; c.m ();
return 0; }
|
Diese Syntax ist verwirrend, weil sie eine Bindung von m an die Instanz c nahelegt, die in Wirklichkeit nicht existiert. Semantisch richtig wäre das hier:
C++: |
int main (void) { C::m ();
return 0; }
|
was ebenfalls funktioniert, aber durch die Syntax klarstellt, dass es sich hier um eine Klassen-Methode und nicht um eine Instanzmethode handelt.
ao |