为什么在下一个程序中成员函数foo优先于全局foo,尽管全局foo匹配类型?
#include <iostream>
using namespace std;
void foo(double val) { cout << "double\n";}
class obj {
public:
void callFoo() { foo(6.4); }
private:
void foo(int val) {cout << "class member foo\n"; }
};
int main() {
obj o;
o.callFoo();
}
Run Code Online (Sandbox Code Playgroud)
考虑如果在代码库中某处声明的全局函数(可能有几条#include
语句)会胜过在类本身class obj
声明的成员函数会发生什么......
这意味着,如果你想安全地玩它,你必须完全限定每个成员函数的调用 ......
this->foo();
Run Code Online (Sandbox Code Playgroud)
...而不是必须限定实际引用全局函数的不太可能的情况.
::foo();
Run Code Online (Sandbox Code Playgroud)
这被称为"最少惊喜的概念".
归档时间: |
|
查看次数: |
735 次 |
最近记录: |