我有时会在初始化类范围operator ::之前看到,为什么在那里使用?
例如:
之间的区别是什么HRESULT hRes = :: CoInitializeEx(NULL,COINIT_APARTMENTTHREADED);
和
HRESULT hRes = CoInitializeEx(NULL,COINIT_APARTMENTTHREADED);
答案 0 :(得分:6)
::
指的是全局命名空间。无论如何,你在那里找到了名字,因此通常不需要。
但是,您使用此原因有两个原因。非限定名称可能来自许多名称空间,并且存在非平凡的规则(例如依赖于参数的查找)以确定要按哪种顺序搜索哪些名称空间。仅在给定的命名空间中查找限定名称。
第二个原因是在类成员函数内部,首先在类范围中查找非限定名称,并且限定名称再次避免这种情况。
答案 1 :(得分:3)
它的含义如下:
HRESULT hRes = ::CoInitializeEx(NULL, COINIT_APARTMENTTHREADED);
The "CoInitializeEx" function uses the global scope // Not from local scope.
和
HRESULT hRes = CoInitializeEx(NULL, COINIT_APARTMENTTHREADED);
The "CoInitializeEx" function uses the local Scope.