Use*_*ser 3 c++ static-methods function-pointers member-functions address-operator
class ThreadWorker
{
public:
ThreadWorker(void);
virtual ~ThreadWorker(void);
static void DoSomething();
};
int main()
{
boost::thread thread1(ThreadWorker::DoSomething);
boost::thread thread2(ThreadWorker::DoSomething);
boost::thread thread3(&ThreadWorker::DoSomething);
}
Run Code Online (Sandbox Code Playgroud)
我正在玩Boost.Thread,我注意到在将静态成员函数作为参数传递时是否使用运算符(&)的地址似乎并不重要.没关系吗?如果没有,为什么?一种方式比另一种更正确吗?
它实际上并不重要.函数(自由函数和静态成员函数,而不是非静态成员函数)衰减到函数指针.没办法比另一个更正确,我碰巧更喜欢明确的一个.
C++ 11标准,4.3/1:
函数类型T的左值可以转换为"指向T的指针"的prvalue.结果是指向函数的指针.
C++ 11 Standard,5.2.2/1 - 函数调用:
函数调用有两种:普通函数调用和成员函数调用.静态成员函数是普通函数.
| 归档时间: |
|
| 查看次数: |
3406 次 |
| 最近记录: |