今天小编给大家分享一下c++命名空间namespace怎么定义的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。一、命名空间的定
今天小编给大家分享一下c++命名空间namespace怎么定义的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。
定义命名空间,使用namespace关键字,后面跟命名空间的名字,然后接一对花括号{ } 即可,{ }中即为命名空间的成员。
namespace test{ int a = 10; int b = 100; int ADD(int x, int y) { return x + y; }}
namespace test{ int a = 10; int b = 100; int Add(int x, int y) { return x + y; } namespace test2 { int c(99); int d(9);//c++可以使用括号来进行列表初始化 int Sub(int x, int y) { return x - y; } }}
同一个工程中允许存在多个相同名称的命名空间,编译器最后会合成同一个命名空间中。
例如:
namespace N1 //N1是命名空间的名称{//用花括号{ }将命名空间的内容包起来//命名空间的内容,即可以定义变量,也可以定义函数int a;int Add(int x, int y){return x + y;}} namespace N1 //再次定义命名空间 N1{int Mul(int x, int y){return x * y;}}
实际上等同于:
namespace N1 //N1是命名空间的名称{ //用花括号{ }将命名空间的内容包起来 //命名空间的内容,即可以定义变量,也可以定义函数 int a; int Add(int x, int y) { return x + y; } int Mul(int x, int y) { return x * y; }}
C++为了防止命名冲突,把自己库里面的东西都定义在一个std的命名空间中要使用标准库里面的东西,有三种方式:
加命名空间的名称及作用域限定符。
使用using引入命名空间的成员。
使用using namespace 命名空间名称引入,将所有名称全展开。
代码如下:
namespace test{int a = 10;int b = 100;int Add(int x, int y){return x + y;}namespace test2{int c(99);//c++可以使用括号来进行初始化int d(9);int Sub(int x, int y){return x - y;}}}int main(){std::cout << test::Add(test::a, test::b) << std::endl;std::cout << test::test2::Sub(test::test2::c, test::test2::d) << std::endl;return 0;}
指定命名空间–麻烦,每个地方都要指定,但也是最规范的方式。
代码如下:
using namespace std;
把std整个展开,相当于库里面的东西全部到全局域里面去了,使用起来方便但是可能会有与自己命名空间定义的冲突,规范工程中不推荐这种,日常练习可以用这种。
代码如下:
int c = 100;namespace N{int a = 10;int b = 20;int Add(int left, int right){return left + right;}int Sub(int left, int right){return left - right;}} using std::cout;using std::endl;int main(){ printf("%d\n", N::a); printf("%d\n", N::b); printf("%d\n", N::Add(1, 2)); printf("%d\n", N::Sub(1, 2)); int c = 10; printf("%d\n", c); //局部变量优先,所以c为10 printf("%d\n", ::c); //指定访问左边域,空白表示全局域}
对部分常用的库里面的东西展开->针对1和2的折中方案,项目中也经常使用。
以上就是“C++命名空间namespace怎么定义”这篇文章的所有内容,感谢各位的阅读!相信大家阅读完这篇文章都有很大的收获,小编每天都会为大家更新不同的知识,如果还想学习更多的知识,请关注编程网其他教程频道。
--结束END--
本文标题: C++命名空间namespace怎么定义
本文链接: https://www.lsjlt.com/news/355116.html(转载时请注明来源链接)
有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341
下载Word文档到电脑,方便收藏和打印~
2024-03-01
2024-03-01
2024-02-29
2024-02-29
2024-02-29
2024-02-29
2024-02-29
2024-02-29
2024-02-29
2024-02-29
回答
回答
回答
回答
回答
回答
回答
回答
回答
回答
0