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

来源:互联网 发布:盐与避难所mac版 编辑:程序博客网 时间:2024/05/16 18:40

C++命名空间是什么?


命名空间, 就是把一些 class 变量 对象 等 归类 到 某 “空间”,也就是规入一个组。想用某组时,用 using .... 表明。例如: 命名空间 first,里面有 变量 var ,整型,初值 5namespace first{int var = 5;} 命名空间 second 里面有 变量 var ,double型,初值 3.1416namespace 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++自己库函数的命名空间,专业的术语就是指标识符的各种可见范围,由于人类的单词有限,现在的大型程序开发,尤其是各种库之间,不可能没有重名的,而且大型程序不可能一个人完成,难免会有名字重复的变量或函数,这时就需要命名空间来区分


0 0
原创粉丝点击