2014-03-14 18 views
9

Wenn Funktionsreferenz wieWann sollte Funktionsreferenz anstelle von Funktionszeiger in C++ verwendet werden?

void (&fr)() = foo; 
fr(); 

statt Funktionszeiger wie

void (*fp)() = &foo; 
fp(); 

Gibt es etwas, Funktionszeiger Referenz kann nicht tun, sondern Funktion verwenden können?

+0

Auch was für Nichtfunktionszeiger und Referenzen gesagt werden kann, kann auch auf Funktionszeiger und Referenzen angewendet werden. Es könnte jedoch einige Ausnahmen geben. –

+0

@MarkGarcia Danke für den Link. Ich werde versuchen, die vernünftige Antwort von dort zu finden. – songyuanyao

Antwort

1

, wenn Sie definieren einen Verweis:

void (&fr)() = foo; 
fr(); 

es Ihnen die Möglichkeit gibt, fr zu verwenden fast überall, wo es möglich wäre, foo zu verwenden, das ist der Grund, warum:

fr(); 
(*fr)(); 

Werke genau die gleiche Art und Weise der foo direkt als mit:

foo(); 
(*foo)(); 

One mehr Der Unterschied besteht in der Dereferenzierung einer Funktionsreferenz, die nicht zu einem Fehler führt, bei dem der Funktionszeiger keine Dereferenzierung erfordert.

Verwandte Themen