簡體   English   中英

C++ 中的“使用命名空間::std”是什么

[英]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::stdusing 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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM