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);
}
我正在玩Boost.Thread并且我注意到,当将静态成员函数作为一个静态成员函数传递时,我是否似乎无论是否使用运算符地址(&)论点。没关系吗?如果没有,为什么?一种方式比另一种更正确吗?
答案 0 :(得分:7)
实际上并不重要。函数(自由函数和静态成员函数,而不是非静态成员函数)衰减到函数指针。没办法比另一个更正确,我碰巧更喜欢明确的那个。
C ++ 11 Standard,4.3 / 1:
函数类型T的左值可以转换为“指向T的指针”的prvalue。结果是指向函数的指针。
C ++ 11 Standard,5.2.2 / 1 - 函数调用:
有两种函数调用:普通函数调用和成员函数调用。静态成员函数是普通函数。