#include <iostream> using namespace std; C++命名空间是什么?

C++命名空间是什么?


命名空间, 就是把一些 class 变量 对象 等 归类 到 某 “空间”,也就是规入一个组。
想用某组时,用 using .... 表明。
例如:
 
命名空间 first,里面有 变量 var ,整型,初值 5
namespace first
{int var = 5;}
 
命名空间 second 里面有 变量 var ,double型,初值 3.1416
namespace second
{double var = 3.1416;}
 
如果有:
using namespace first;
cout << var << endl;
输出 5
 
如果有:
using namespace second;
cout << var << endl;
输出 3.1416
 
同样,不同空间 有同名函数变量,同名类,同名对象 和 不同名函数变量,类,对象。有了命名空间,便可找到 想要的那组 函数,变量,类,对象。



=====================================================================================


std是标准名字空间
一般使用 #include<iostream.h>是不需要用 using namespace std;的
但是使用#include<iostream>就一定要加 using namespace std
追问
那#include<iostream.h>和using namespace std;就没有区别吗?
回答
这两个根本不是同一样东西
比如你用了 #inlucde<iostream.h>,后面代码直接可以 这个头 文件里定义的东西了,例如 cout之类的
但是 using namespace std,表示使用 std 名字空间的东西,你如果加了 #include<iostream>,才可以使用 cout, 如果不用using namespace std的情况下用 #include<iostream>,还是不能直接使用cout;而是要用  std;cout才能使用
跟<iostream.h>跟<iostream>其实是对应的,只不过<iostream>是把<iostream.>里面的东西封装到std名字空间去了,你应该去看一看为什么要有名字空间








其实很好理解的,有点类似于类,不同的命名空间下可以有相同名字的变量或函数,举个例子
#include <iostream>

namespace aaa
{
	void display();
}

namespace bbb
{
	void display();
}

void aaa::display()
{
	std::cout<<"Hello"<<std::endl;
}

void bbb::display()
{
	std::cout<<"sorry"<<std::endl;
}

int main()
{
	aaa::display();
	bbb::display();//不同的空间下虽然名字相同调用的却不是同一个函数
	return 0;
}

aaa空间里的display()函数可以和bbb空间的display()函数互不干扰,而std空间里的函数是C++自己库函数的命名空间,专业的术语就是指标识符的各种可见范围,
由于人类的单词有限,现在的大型程序开发,尤其是各种库之间,不可能没有重名的,而且大型程序不可能一个人完成,难免会有名字重复的变量或函数,这时就需要命名空间来区分


### C++中 `#include` 和 `using namespace std` 的用法 #### 1. `#include` 的作用 在C++中,`#include` 是一种预处理指令,用于将指定的头文件内容嵌入到当前源文件中。通过这种方式,程序可以访问头文件中定义的功能和声明。例如,`#include <iostream>` 将标准输入输出流的内容引入到程序中,使得我们可以使用像 `std::cout` 这样的功能来实现数据的输出[^4]。 以下是包含 `<iostream>` 头文件的一个简单例子: ```cpp #include <iostream> int main() { std::cout << "Hello, World!" << std::endl; return 0; } ``` 在这个例子中,`<iostream>` 提供了 `std::cout` 和 `std::endl` 的定义,允许我们在控制台打印消息[^1]。 --- #### 2. `using namespace std` 的作用 `using namespace std;` 声明语句的作用是将 `std` 命名空间中的所有名称导入到当前作用域中。这意味着,在后续代码中可以直接使用 `std` 命名空间下的成员(如 `cout`, `cin` 等),而无需每次都显式地写出 `std::` 前缀[^5]。 如果没有这条语句,则需要每次调用标准中的对象或函数时都加上 `std::` 前缀。例如: ```cpp // 不使用 using namespace std #include <iostream> int main() { std::cout << "Hello, World!" << std::endl; return 0; } ``` 相比之下,如果加入 `using namespace std;`,则可以简化为如下形式: ```cpp // 使用 using namespace std #include <iostream> using namespace std; int main() { cout << "Hello, World!" << endl; return 0; } ``` 需要注意的是,虽然 `using namespace std;` 能够让代码更简洁,但在大型项目中可能会引发命名冲突问题,因此建议仅在小型程序中使用它[^3]。 --- #### 3. 总结两者的区别与联系 - **`#include`**: 它负责加载外部头文件,提供特定功能的支持。例如,`#include <iostream>` 加载了标准输入/输出流支持。 - **`using namespace std`**: 它是一种命名空间管理机制,目的是减少冗余书写工作量。它可以让我们省去频繁使用的 `std::` 前缀[^4]。 两者通常是配合使用的,尤其是在初学者阶段或者简单的应用程序开发过程中。然而,在实际工程实践中,推荐只针对具体需求引入必要的命名空间成员,而不是整个命名空间,以降低潜在的风险。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值