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

时间:2013-02-19 19:24:04

标签: c++ scope

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

class MyClass
{
 int myFunc(int argument)
 {
     // do some stuff
     return (::myFunc(another_argument));
 }
}

有实际的原因吗?这个是“这个”吗?

1 个答案:

答案 0 :(得分:9)

如果您有这样的用例:

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

//elsewhere
class MyClass
{
 int myFunc(int argument)
 {
     // do some stuff
     return (::myFunc(another_argument));
 }
}

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

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