c++——命名空间干货

1.概念

命名空间的出现是为了防止标识符的重定义,比如在合并多个文件后,可能会出现多个文件

 使用了同一个变量名。再比如你的变量名与某一函数相同。(命名空间中可以定义函数)

2.原理:

为什么会出现重定义这样的问题?因为在同一个作用域中不能定义同名变量。而命名空间可以为其中一个变量在当前作用域中另外开辟一个作用域,这样他梦们之间的作用域不同,也就可以再次使用这个标识符了,你可以想象为将重定义的两个变量中的一个关起来.

特别注意的是,命名空间针对的是全局变量,不能在main函数中使用它

3.了解

1.namespace是命名空间的关键字,xx是自己起的名字

2.命名空间可以嵌套定义,这样可以放在多个命名空间之间的重定义

2.在同一个大项目下,同名的命名空间会自动合并成一个命名空间

4.使用

共有三种方式去使用命名空间中的变量

1.通过作用域限定符“::”来使用

要注意的是:对于结构体,要将xx::置于结构体名字之前不能置于struct之前,因为struct不是结构体名字而是关键字。

2.使用using xx:y将命名空间xx中的成员y引入

每次使用命名空间中的成员时,都要写成xx::a,这样会比较麻烦。

因此我们使用using xx::a,将命名空间中的a变量放出来(注意:a的作用域仍然不是全局,只是能打上全局变量的标签),当作全局变量使用(局部变量优先

然而,此时命名空间外不能有同名变量,否则就与放出来的a重定义了.

3.使用using namespace xx将命名空间xx引入

类似于第二种方法,第三种方法会将命名空间中的变量全部解放出来(注意:a的作用域仍然不是全局,只是能打上全局变量的标签,但这样会失去命名空间的意义所以一般不用

补充一下:1.在如果把命名空间中的变量当作参数传给同一命名空间的函数,就算不用作用域限定符限定函数,也会优先调用和参数在同一命名空间的函数.

2.命名空间只影响作用域不会影响本来的生命周期

  • 9
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
C++中自定义命名空间(namespace)的作用是为了避免命名冲突,类似于文件夹的概念,可以将相似的变量、函数、类等放在一个命名空间中进行管理。在一个命名空间定义的名称只在该命名空间中有效,不会与其他命名空间定义的名称发生冲突。 C++中自定义命名空间的使用方法有三种,分别是: 1.使用命名空间前缀,即在变量、函数、类等前加上命名空间的名称和作用域解析符(::),例如:`spaceA::aaa`。 2.使用using声明,即使用`using namespace 命名空间名`声明使用命名空间,例如:`using namespace spaceA`。 3.使用using编译指令,即在代码中使用`using 命名空间名::名称`的方式声明使用命名空间,例如:`using spaceA::aaa`。 下面是一个使用using声明的例子:[^1] ```c++ #define _CRT_SECURE_NO_WARNINGS 1 #include<iostream> using namespace std; namespace spaceA { // 自定义命名空间spaceA int aaa = 10; } using spaceA::aaa; // 声明命名空间spaceA中的变量aaa int main() { // 使用using声明的方式访问命名空间定义的变量 cout << aaa << endl; // 输出:10 return 0; } ``` 下面是一个使用命名空间前缀的例子: ```c++ #define _CRT_SECURE_NO_WARNINGS 1 #include<iostream> using namespace std; namespace spaceA { // 自定义命名空间spaceA int aaa = 10; } int main() { // 使用命名空间前缀的方式访问命名空间定义的变量 cout << spaceA::aaa << endl; // 输出:10 return 0; } ```

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值