/*
Something worth noticing here is that if I drop the const
qualifier in ‘func’, I am still able to push_back
the function ‘add’ and the other following functions to vector,
yet it seems like those function also lose the const qualifer,
because I am not allowed to use int literal as the parameters.
*/
// using func = int(*)(const int&, const int &);
typedef int (*func)(const int&, const int&);
int add(const int &A, const int &B){return A+B;}
int subtract(const int &A, const int &B){return A-B;}
int multiply(const int &A, const int &B){return A*B;}
int divide(const int &A, const int &B){return A/B;}
int main(int argc, char *argv[])
{
int ver = 1;
vector<func> vec;
vec.push_back(add);
vec.push_back(subtract);
vec.push_back(multiply);
vec.push_back(divide);
for (auto f : vec)
cout << f(5,20) << endl;
cout << "version "<< ver << endl;
return 0;
}
6.7Pointers to Functions
最新推荐文章于 2023-03-09 20:15:02 发布