为什么成员函数以这种方式解决?

时间:2014-04-16 11:58:55

标签: c++ c++11

为什么在获取成员函数的地址而不是全局函数时会出现&符号?即,为什么像

std::bind(&MyClass::MemberFunction, ...);

当全局函数需要

std::bind(GlobalFunction, ...);

1 个答案:

答案 0 :(得分:9)

C允许从全局函数名到这些函数的指针的隐式转换。由于向后兼容性原因,C++保留了这些隐式转换。 C没有成员函数,因此在成员函数的情况下不需要提供隐式转换。

C++不允许在不强制与C兼容的情况下进行隐式转换,因为有人认为此类转换令人困惑且可能含糊不清,同时提供的好处很少。