【问题标题】:Why are member functions addressed this way?为什么以这种方式处理成员函数?
【发布时间】:2014-04-16 11:58:54
【问题描述】:

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

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

何时需要全局函数

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

?

【问题讨论】:

标签: c++ c++11


【解决方案1】:

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

C++ 在与C 兼容的情况下不允许隐式转换,因为人们认为这种转换令人困惑并且可能模棱两可,同时提供的好处很少。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-01-01
    • 2020-04-07
    • 1970-01-01
    • 2014-03-21
    • 1970-01-01
    • 1970-01-01
    • 2021-07-19
    • 2022-11-20
    相关资源
    最近更新 更多