Weil das der Standard sagt:
9.4.1 Statische Memberfunktionen [class.static.mfct]
2) [Hinweis: Eine statische Elementfunktion hat keinen this -Zeiger (9.3.2). -end Notiz] A this
Mitglied
Funktion darf nicht static
sein. Es soll keine this
- und eine nicht - static
- Memberfunktion geben mit dem
gleicher Name und gleiche Parametertypen (13.1). Eine statische Elementfunktion darf nicht als static
deklariert werden.
virtual
oder =0
. (Betonung meiner)
Der Grund dafür ist, dass eine &&
(oder %code% oder %code% ) %code% Methode keinen Sinn ergibt (im traditionellen Sinne, siehe unten). Zum Beispiel bedeutet %code% , dass Sie die Mitglieder des Objekts nicht ändern können, aber im Falle der Statik gibt es kein Objekt, über das Sie sprechen könnten.
Sie könnten argumentieren, dass ein %code% %code% auf andere %code% -Mitglieder angewendet werden könnte, aber diese Option wurde als sinnlos angesehen.
Die cv-Modifier der Member-Funktionen entsprechen der Qualifikation des versteckten %code% -Parameters.
%code% Funktionen haben keinen %code% Parameter. Daher benötigen sie keine CV-Qualifier. Also wurde entschieden (IMHO zu Recht, da es sonst keine Bedeutung hätte), sie auf %code% -Funktionen zu verbieten.
BTW %code% -Memberfunktionen können auch nicht %code% , rein ( %code% ), gelöscht, default, %code% etc.
sein
___ tag123c ___ C ++ ist eine universelle Programmiersprache. Es wurde ursprünglich als Erweiterung von C entworfen und behält eine ähnliche Syntax, ist aber jetzt eine komplett andere Sprache. Verwenden Sie dieses Tag für Fragen zu Code, der mit einem C ++ - Compiler kompiliert werden soll.
___ answer12998099 ___
Es gibt kein "aktuelles Objekt" beim Ausführen einer statischen Funktion, so dass es wenig Sinn macht, über statische Funktionen zu sprechen, die %code% sind oder nicht.
Beachten Sie, dass Sie eine %code% -Funktion mit einer Instanz aufrufen können, aber das ist nur ein seltsames C ++ "Feature" (manchmal praktisch, weil es in C ++ 03 schwer war, den Typ eines Wertes zu erhalten).
%Vor%
Ich kann verstehen, dass Sie "const static functions" beschreiben möchten, die kein statisches Datenelement ändern und auch nur andere statische const-Funktionen aufrufen können.
Aber diese Unterscheidung ist in C ++ nicht vorhanden.
Statische Elementfunktionen sind globale, freie Funktionen, die nicht von einem Objekt (d. h. einer Klasseninstanz) abhängen. Die CV-Qualifikationsmerkmale für nicht statische Memberfunktionen beziehen sich auf den Typ des -Objekts , auf dem sie aufgerufen werden, und dieser Begriff trifft einfach nicht auf statische Memberfunktionen zu.
Beispiel:
%Vor%
War es interessant zu wissen, warum statische Elementfunktionen nicht als const oder volatile oder const volatile erklärt werden können?
%Vor%
___ qstnhdr ___ C ++: Warum können statische Funktionen nicht als const oder volatile oder const volatile erklärt werden [duplizieren]
___