[英]What is "using namespace::std" in C++
我正在閱讀其他人的一些代碼片段,我找到了一行:
using namespace::std;
我懷疑它的目的是using namespace std;
, 有一些錯別字。 但令我驚訝的是,編譯器毫無怨言地接受了這段代碼。 我用:
$ g++ --version
g++ (Ubuntu 9.4.0-1ubuntu1~20.04) 9.4.0
$ /usr/bin/g++ ${SRC} -std=c++11 -pthread -Wall -Wno-deprecated -o ${OUT}
我想知道為什么這段代碼有效,它會產生什么影響? 我懷疑這是一種不好的做法。
這與using namespace::std;
相同。 ,則與using namespace std;
.
作為using-directives的語法:
(強調我的)
attr(optional) using namespace nested-name-specifier(optional) namespace-name;
嵌套名稱說明符 - 名稱序列和 scope 解析運算符::,以 scope 解析運算符結尾。 單個:: 指的是全局命名空間。
using namespace::std
與using namespace std;
::
符號是 scope 分辨率運算符。 當在其前面沒有 scope 名稱使用時,它指的是全局命名空間。 這意味着std
是頂級名稱空間,並且沒有包含在另一個名稱空間中。
例如,以下所有內容都是有效的:
namespace A { namespace std{} }
using namespace::std;
using namespace A;
using namespace ::A;
using namespace::A;
using namespace A::std;
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.