ton*_*nni 0 c++ scope initialization class
我有时在初始化类范围operator ::之前看到,为什么在那里使用?
例如:有什么区别:
HRESULT hRes = :: CoInitializeEx(NULL,COINIT_APARTMENTTHREADED);
和
HRESULT hRes = CoInitializeEx(NULL,COINIT_APARTMENTTHREADED);
::指的是全局命名空间.无论如何,你会在那里找到名字,所以通常不需要.
但是,有两个原因可以解释为什么使用它.非限定名称可能来自许多名称空间,并且存在非平凡的规则(例如依赖于参数的查找)以确定要按哪种顺序搜索哪些名称空间.仅在给定的命名空间中查找限定名称.
第二个原因是在类成员函数内部,首先在类范围中查找非限定名称,并且限定名称再次避免这种情况.