Der Zweck von einem über dem anderen ist C-Kompatibilität. C sagte, dass Funktionen automatisch zu Pointer-Funktionen ablaufen. Um kompatibel zu sein, musste C ++ dasselbe tun.
Beachten Sie, dass, wenn C ++ einen neuen Funktionszeigertyp (Elementfunktionszeiger) einführte, sie nicht automatisch abklingen. Wenn also das C ++ Komitee seinen Weg gehen würde, wären die Chancen gut, dass du &
brauchst.
Aus dem Buch C ++ - Programmiersprache ist klar ersichtlich, dass die Operatoren &
und *
für Zeiger auf Funktionen optional sind:
Es gibt nur zwei Dinge, die man mit einer Funktion machen kann: Call it and take seine Adresse. Der Zeiger, der erhalten wird, indem man die Adresse einer Funktion nimmt kann dann verwendet werden, um die Funktion aufzurufen. Zum Beispiel:
%Vor%Der Compiler wird feststellen, dass efct ein Zeiger ist und den Aufruf aufrufen Funktion wies auf. Das heißt, Dereferenzierung eines Zeigers zur Funktion mit * ist optional. In ähnlicher Weise verwendet & amp; um die Adresse von a zu bekommen Funktion ist optional:
%Vor%
Wie andere darauf hingewiesen haben, ist Zeiger auf Elementfunktion in C ++ neu / anders. % Co_de% ist nicht optional, um auf ein Element zu verweisen, und es wird als (in C ++ - Programmiersprachenbuch) erklärt:
Ein Zeiger auf ein Element kann durch Anwenden der Adresse-of erhalten werden Bediener & amp; zu einem vollständig qualifizierten Klassenmitgliedsnamen, zum Beispiel & amp; Std_interface :: suspend.