- ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:【C++】関数ポインタの代入)
【C++】関数ポインタの代入
このQ&Aのポイント
- C++の関数ポインタについて質問です。関数ポインタを宣言し、3通りの代入を行ってみました。&を付ける場合と付けない場合で動きが同じになる理由を教えてください。
- 関数ポインタの動作について質問です。関数名の頭に&を付けた場合と付けない場合で全く同じ動作になるのはなぜですか?
- C++の関数ポインタに関して質問があります。関数名の頭に&を付けた場合と付けない場合で代入結果に違いがないのはどうしてなのでしょうか?
- みんなの回答 (1)
- 専門家の回答
質問者が選んだベストアンサー
一言で言えば Func は &Func に暗黙的に変換されるからです。より詳しく書くと、関数型は function-to-pointer conversion 規則 (C++規格 [conv.func]) によって、暗黙的に関数ポインタ型に変換されるのです。 この変換規則によって、例えば getchar(); を (*****getchar)(); などと書く事すらできてしまいます。 (*&*&*&*&*&getchar)(); に変換される為です。 (寧ろ、どの様な動作の違いを期待されたのでしょうか。)
お礼
akinomyogaさん どういった動きをするのか検証していたところで 思わぬ動きをしたもので悩んでおりました。 大変有難うございました。