中国建设部网站查询网,自己创建的网站,织梦网站文章发布信息模板下载,档案网站建设图片目录
1.引例
2.命名空间的定义
3.命名空间的使用
4.命名空间使用注意事项 1.引例
#include stdio.h
#include stdlib.hint rand 10;int main()
{printf(%d\n, rand);return 0;
}
当我们用C语言写下这样的代码#xff0c;看着并没有什么语法…
目录
1.引例
2.命名空间的定义
3.命名空间的使用
4.命名空间使用注意事项 1.引例
#include stdio.h
#include stdlib.hint rand 10;int main()
{printf(%d\n, rand);return 0;
}
当我们用C语言写下这样的代码看着并没有什么语法问题但是当编译时就会出现这样的报错 经过查询后才发现原来 rand 是一个库函数我们并不能使自己的变量名与之相同。
这可麻烦了到了工作时我们面对海量的代码势必会有各种各样相同的变量名字或函数名造成命名冲突我们总不能一个一个改过去吧那么有什么办法可以解决这一问题呢
答案是肯定的这就是接下来要讲到的命名空间namespace)。
2.命名空间的定义
定义命名空间需要使用到namespace关键字后面跟命名空间的名字然后接一对{}即可{}中即为命名空间的成员类似于结构体的样子
//该命名空间的名字为hxy花想云
namespace hxy
{//定义自己的变量、函数等int rand 10;void qsort(int* a, int n){//...}struct Node{int val;struct Node* next;//...};
}
命名空间可以嵌套
namespace hxy
{int rand 10;namespace hxy2{int rand 20;namespace hxy3{//....}}
}
同一个工程中允许存在多个相同名称的命名空间编译器最后会合成同一个命名空间中。
//test.cpp中定义
namespace hxy
{int rand 10;void qsort(int* a, int n){//...}struct Node{int val;struct Node* next;//...};
}
//test.h中定义
namespace hxy
{int sum 0;int add(int a, int b){//...}
}//两个hxy会被合并成为一个 一个命名空间就定义了一个新的作用域命名空间中的所有内容都局限于该命名空间中。
3.命名空间的使用
命名空间的使用有 3 种方式
加命名空间名称及作用域限定符::
namespace hxy
{int rand 10;void qsort(int* a, int n){//...}struct Node{int val;struct Node* next;//...};
}int main()
{printf(%d\n, hxy::rand);return 0;
}
使用using将命名空间中某个成员引入
using hxy::rand;int main()
{printf(%d\n,rand);return 0;
}使用using namespace 命名空间名称引入
using namespace hxy;int main()
{printf(%d\n, rand);return 0;
}
4.命名空间使用注意事项
我们可能经常见到这样的语句
using namespace std;
它告诉编译器在当前代码块中使用标准命名空间namespacestd中的标识符 。
标准命名空间std是C标准库的命名空间包含了很多常用的函数和对象例如输入/输出操作cout、cin、字符串处理、数学运算等。
使用using namespace std可以使代码更简洁易读但可能会导致命名冲突或歧义。
实际开发项目的过程中我们一般使用
1.域作用限定符访问
#include iostreamint main()
{//cin、cout为C中常用的输入输出语句//end暂且可理解为作用与\n相同std::cout hello world std::endl;return 0;
}
2.部分常用展开使用
using std::cout;
using std::endl;int main()
{cout hello world endl;return 0;
}
在日常的代码练习中为了方便可使用
3.全局展开。
using namespace std;
int main()
{cout hello world endl;return 0;
}