重複の可能性:
なぜこれらすべてのクレイジーな関数ポインター定義がすべて機能するのですか? 本当に何が起こっているのですか?
コードで理由を説明していただければ幸いです
void f(int& i)
{
i++;
}
void g(void (passed_f)(int&),int& a) //`passed_f` equivalent to `*passed_f`
{
passed_f(a);
}
int main()
{
int n=0;
g(f,n); //`f` is equivalent to `&f`
}
エラーを生成せず、まったく同じ結果1
. 関数へのポインターを受け入れるか、関数自体を受け入れるかは問題ではないようg
です... また、[c]-tag が適切であると思います。