b***i 发帖数: 3043 | 1 有一个lambda
auto getX = [](const Point){...};
然后在另一个lambda用
yyy(..., getX);
yyy的定义是
[](..., double func(const Point))
{
... func);
}
我知道函数指针double (*func)(const Point).为什么这里没有*? | r*****z 发帖数: 906 | 2 你知道function pointer被call时自动dereferencing吧? | b***i 发帖数: 3043 | 3 // Example program
#include
#include
class Test {
public:
Test(int b):a(b){}
int getA()const{return a;}
private:
int a;
};
int main()
{
auto xxx=[](const Test t){return t.getA();};
auto yyy=[](int& x, int (*func)(const Test)){
Test t(1);
x = (*func)(t);
};
int y=0;
yyy(y, xxx);
std::cout<
return 0;
}
改成下面一样通过
auto yyy=[](int& x, int func(const Test)){
Test t(1);
x = func(t);
};
看来,function pointer根本不用*吗
【在 r*****z 的大作中提到】 : 你知道function pointer被call时自动dereferencing吧?
| y**********u 发帖数: 2839 | | s*****V 发帖数: 21731 | | t*****n 发帖数: 2578 | | h**l 发帖数: 168 | 7 In C/C++, func, *func, **func, ***func ... are pretty much equivalent. |
|