在C++中包含和使用命名空间

Moe*_*oeb 9 c++ using using-statement include

对于使用cout,我需要指定两者:

#include<iostream>
Run Code Online (Sandbox Code Playgroud)

using namespace std;
Run Code Online (Sandbox Code Playgroud)

在哪里cout定义?在iostream,对吗?那么,它iostream本身就是命名空间std吗?

关于使用的两个陈述的含义是什么cout

我很困惑为什么我们需要将它们都包括在内.

Tom*_*Tom 9

iostream是定义cout的文件的名称.另一方面,std是一个名称空间,与java的包相当(在某种意义上).

cout是iostream在std命名空间内的文件中定义的实例.

cout在另一个命名空间中可能存在另一个实例.因此,为了表明您要使用命名空间中的cout实例std,您应该编写

std::cout,表明范围.

std::cout<<"Hello world"<<std::endl;
Run Code Online (Sandbox Code Playgroud)

为避免std::无处不在,您可以使用该using子句.

cout<<"Hello world"<<endl;
Run Code Online (Sandbox Code Playgroud)

他们是两个不同的东西.一个表示范围,另一个表示实际包含范围cout.

回应你的评论

想象一下,在iostream中,两个名为exists的实例cout存在于不同的名称空间中

namespace std{
   ostream cout;
}
namespace other{
   float cout;//instance of another type.
}
Run Code Online (Sandbox Code Playgroud)

包含之后<iostream>,您仍然需要指定命名空间.该#include声明说犯规"嘿,使用COUT中的std ::".这是什么using,指定范围