以下例子。我創建一個名爲s
的函數指針,將其設置爲f
並調用它。編譯沒有問題,當然:函數指針語法歧義
void f() {}
int main() {
void (*s)();
s = f;
s();
}
但藉此在下一個例子,在那裏我現在宣佈s
爲「函數參考」(如果它所謂的),並設置爲f
在線。這編譯也很好:
void f() {}
int main() {
void (&s)() = f;
s();
}
這兩種方法創建和初始化函數指針有什麼區別?請注意,當我使用參考語法時,我需要將它「in-line」初始化爲f
,而使用「指針」語法,我有兩種方法可以完成。你能解釋一下嗎?那麼,你能解釋它們在可用性方面的差異嗎?何時我必須使用一種形式而不是其他形式?