为什么在获取成员函数的地址而不是全局函数时会出现&符号?即,为什么像
std::bind(&MyClass::MemberFunction, ...);
当全局函数需要
时std::bind(GlobalFunction, ...);
答案 0 :(得分:9)
C
允许从全局函数名到这些函数的指针的隐式转换。由于向后兼容性原因,C++
保留了这些隐式转换。 C
没有成员函数,因此在成员函数的情况下不需要提供隐式转换。
C++
不允许在不强制与C
兼容的情况下进行隐式转换,因为有人认为此类转换令人困惑且可能含糊不清,同时提供的好处很少。