次の例を見てください。、という名前の関数ポインタを作成しs
、に設定してf
呼び出します。もちろん、これは正常にコンパイルされます。
void f() {}
int main() {
void (*s)();
s = f;
s();
}
しかし、この次の例を見てみましょう。ここではs
、「関数参照」として宣言し(いわゆる関数参照)、f
インラインに設定します。これも正常にコンパイルされます。
void f() {}
int main() {
void (&s)() = f;
s();
}
関数ポインタを作成および初期化するこれら2つの方法の違いは何ですか?参照構文を使用する場合は、「インライン」で初期化する必要がありますf
が、「ポインター」構文では、両方の方法で初期化できます。それも説明できますか?それでは、使いやすさの点でそれらの違いは何であるか、そしていつ一方のフォームをもう一方のフォームと比較する必要があるのかを説明できますか?