Wir wissen, dass ein „gemeinsamen“ Zeiger auf eine Funktion erstellen wir beispielsweise tun können:Adreßoperator mit Zeigern auf Elementfunktion
void fun();
void (*ptr)() = fun;
Der Name einer Funktion ist auch die Adresse, wo die Funktion Start. Also brauche ich nicht den Adressoperator & wie folgt zu verwenden:
void (*ptr)() = &fun;
nun für einen Zeiger auf eine Elementfunktion im Gegenteil ich den Adressoperator verwenden. Zum Beispiel für eine Klasse A mit einem Zeiger auf Elementfunktion ptr und Funktion fun() Ich muß schreiben:
void(A::*ptr)() = &A::fun;
Warum dieser Unterschied?
Der Verlauf der Verwendung von Funktionsnamen anstelle von Zeigern geht auf die frühen C-Zeiten zurück - ungefähr zur gleichen Zeit, als Sprachentwickler entschieden, dass Array-Namen den Zeiger auf ihr erstes Element darstellen. Diese Entscheidung widerspricht der Mehrzahl der anderen Anwendungsfälle für Zeiger, wenn "&" obligatorisch ist. C++ beseitigt dieses Problem für Dinge, die nicht in C. – dasblinkenlight