我来自C工作环境,是C ++的新手。 请在以下声明中提供帮助。
在一些函数foo()里面我找到了这段代码。
::ifstream ifObj;
我知道它正在声明输入文件流对象。
但我完全不知道::
范围解析的概念。
这是什么以及为什么它用于声明对象。
无法在任何地方找到,因此问道。
答案 0 :(得分:2)
特别针对您的问题,
让跟踪器在跟踪ifstream类型的原点时解决歧义问题。
ifstream可以在第三方库中声明,例如boost以提供不同的含义,
考虑一下,
namespace boost {
typedef int ifstream;
}
using namespace boost;
//but here you want global ifsteam, not from boost, so
::ifstream ifObj; // Here you are creating a object for global ifstream, not for boost's ifstream,
答案 1 :(得分:1)
如果在本地命名空间中覆盖该令牌,则使用一元范围解析运算符来引用令牌的全局命名空间版本。
F.ex:
int count = 0;
int main(void) {
int count = 0;
::count = 1; // set global count to 1
count = 2; // set local count to 2
return 0;
}