命名空间
什么是命名空间呢,C++中会会定义很多变量,函数,对象等等,在一个大型项目或者团队协作的时候不可避免的产生命名冲突,那么我们把命名放在命名空间里边,然后在再用的时候再从命名空间里边用,就可以避免这种问题了。
如何定义命名空间
我们引入关键字namespace,后面写上你的命名空间的名字就行,再加上{}。 例如 你可以定义一个函数或者进行嵌套
namespace wzy { int name; int rand; int number; // absolutely you can define an funtion int sum(int a,int b) { return a + b; } //Absolutely you can nested namespace wzy2 { int c; int funtion; } }
需要注意的是,你可以命名相同名字的命名空间,不过不用担心,编译器会把他们合成在一起,而且一旦建立的命名空间,里边的变量函数等就被限制了,
如何使用命名空间
`#include<stdlib.h> int rand=0;
int main() { printf("%d\n", rand); }` 看到这里,
rand产生的重定义,这是因为stdlib中的关键字和rand冲突了,这时
rand被zzz限制了,所以先优先选用库函数里边的函数地址,需要注意的是,变量优先在局部里边去找,因为rand被限制了,所以去找库函数,就找不到了。
这里就可以用了,这个叫做直接加作用域限定符
这样可以单独展开
当然也可以全部展开
不过这样就失去了本身隔离的意义了,不建议使用
using namespace std;
#include<iostream> using namespace std; int main() { cout << "hello wolrd!" << endl; }
在这段代码中,iostream是头文件,就是输入输出的头文件,然后《表示让hello world 以流的形式到标准输出里边去
std:c++的库的实现定义在std的命名空间,以防止程序员自己定义的东西冲突
#include<iostream> //using namespace std; int main() { std::cout << "hello wolrd!" << std::endl; }
更建议这样写
#include<iostream> //using namespace std; using std::cout; using std::endl; int main() { cout << "hello wolrd!" << endl; }
cout
这个函数和printf差不多,但是不需要注意格式了,然后用<<||>>进行输入和输出