【发布时间】:2016-11-11 08:05:43
【问题描述】:
这可能是一个愚蠢的问题。
我注意到我们对命名空间和静态成员函数都使用了范围解析运算符 ::。
1)
std::printf("foo");
2)
MyClass::foo();
这是我的问题:
1. C++ 编译器如何区分它们?
2. C++编译器看到作用域解析操作符的过程是什么?
【问题讨论】:
-
对于您的第一个问题,在您展示的示例中,一切都与上下文有关。您的第二个问题是在 SO 上广泛解释的方式,并且对于不了解编译器如何工作的任何人都很难做到。
-
有没有一种情况是我们使用类函数而不实例化java之类的对象?
-
仅
static成员函数。 -
我稍微修改了这个问题。我说的是静态成员函数。
-
即使在您编辑之后,第二个示例也没有调用静态成员函数。它看起来仍然更像是一个成员函数定义。
标签: c++ class namespaces