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,我注意到在将静态成员函数作为参数传递时是否使用运算符 (&) 的地址似乎并不重要。没关系吗?如果不是,为什么?一种方式比另一种方式更正确吗?

最佳答案

它有效无关紧要。函数(自由函数和静态成员函数,而不是非静态成员函数)衰减为函数指针。没有什么比另一种更正确的了,但我碰巧更喜欢明确的一种。

C++11 标准,4.3/1:



C++11 标准,5.2.2/1 - 函数调用:

关于c++ - 将静态方法作为参数传递,不需要运算符地址?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/7761527/

10-13 05:27