C++使用范围运算符调用相同的函数 - 它有用吗?

Joh*_*ing 3 c++ scope

我知道C++中的::运算符是作用域解析,但是在类中调用函数的目的是什么呢?

class MyClass
{
 int myFunc(int argument)
 {
     // do some stuff
     return (::myFunc(another_argument));
 }
}
Run Code Online (Sandbox Code Playgroud)

有实际的原因吗?这个是"这个"吗?

111*_*111 9

如果您有这样的用例:

//in the global namespace
int myFunc(int);

//elsewhere
class MyClass
{
 int myFunc(int argument)
 {
     // do some stuff
     return (::myFunc(another_argument));
 }
}
Run Code Online (Sandbox Code Playgroud)

这里我们需要分辨成员函数和自由函数.包装C库时,这种情况非常常见.

在这种情况下,::强制编译选择驻留在全局命名空间中的版本而不是最终以递归方式调用自身的成员函数.