2
我知道void(*)(int)是一個函數指針。但是我真的很困惑void(int)。首先,他們是不同類型的void(int)和void(*)(int)有什麼區別?
using A = void(int);
using B = void(*)(int);
is_same<A*, B>::value == true
我可以使用函數指針初始化B型的變量,但不是A
void func(int x){
cout<<x<<endl;
}
B b { func }; //ok
A a { func }; //error
A* ap { func }; //ok
但如果用作函數參數類型,他們似乎是可交換
void callA(A a, int arg){ a(arg); }
void callB(B b, int arg){ b(arg); }
callA(func, 1); //ok
callB(func, 1); //ok
那麼什麼是void(int)呢?什麼時候應該使用void(int),何時應該使用void(*)(int)?