C++命名空间

命名空间:

#include<stdafx.h>  //预编译头,项目自带的,编译器编译这个项目,对于大型项目,如果改变了一个程序之后,编译器只会编译改变的那个程序,不会将所有的程序都编译一下,可以加快速度,如果不要该头文件也是可以的,需要在项目属性中取消预编译头

#include<iostream>     //输入输出流  cout <<   cin >>

Using namespace std;   //这是使用的系统中的名字叫做std的命名空间

 

那么如何定义命名空间呢?

Namespace    zhangsan

{

//可以定义变量、函数、类、结构体,都行

Int age;

}

使用命名空间中的变量:

第一种  zhangsan::变量名

第二种 using  zhangsan::变量名

表示从这句话开始,以下所有的该变量都是使用zhangsan中的变量 ,并且不可以重新定义

第三种 using namespace  zhangsan(放在局部);

表示从这句话开始使用的变量会在zhangsan命名空间中找

 

第四种 using namaspace zhangsan;语句直接放在全局中(最正常的人使用)

::   限定符表示后面的变量是属于哪个空间中的

 

如果在命名空间中有一个fun()函数,然后还有一个全局的函数fun()那么,并且还有 using namaspace zhangsan;这一句话,这时你如果在main函数中调用fun();的话肯定是不行的,因为编译器会不知道你要使用的是哪一个的fun()

那么你可以这样使用全局中的fun()函数

::fun(); //::  作用说明是全局的

这样使用命名空间中的fun()函数

Zhangsan::fun();

注意:命名空间不可以在局部进行定义,可以在局部进行使用

另外还需要注意的是局部中定义的变量和全局命名空间(指的是using namespace zhangsan;这句话放在了主函数外边)中的是不冲突的,编译器会采取就近原则进行使用


这样的是不可以的

 

这样的是可以的

 

 

这样也是可以的,并不冲突

 

在一个程序中是可以使用多个命名空间的,但是要注意尽量避免不要连续声明多个命名空间,因为可能会出现冲突

命名空间的嵌套:

 

 

命名空间的合并:

可以定义重复名字的命名空间,这样就会将两个合成一个进行处理

Namaspace {

Int age=10;

}

这样的就是全局命名空间和static是类似的,只可以在当前问文件中使用

如何使用全局命名空间中的变量:

Cout<<age<<endl;或者cout<<::age<<endl;

那么如果在来一个全局变量

Int age=30;

这样的也是可以的,因为全局命名空间中的age{}之中的,和全局变量age并不冲突

但是在使用的时候必须加上限定符::并且使用的是全局的age,不是namespace中的age,吧并且namespace中的age是无法再被访问了

 

 

如果有这样的命名空间:

Namaspace    zhangsan

{

Int age=1;

Namespace   lisi

{

Int age=2;

Namespace  wangwu

{

Int age=3;

}

}

}

那么就需要一步一步的进行访问:

访问wangwu中的age  zhangsan::lisi::wangwu::age;

或者这样:

Namespace  MM=zhangsan::lisi::wagnwu;

MM::age;

注意不可以使用typedef zhangsan::lisi::wangwu;因为typedef只可以重定义数据类型

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
命名空间使用有三种方式: 1. 使用命名空间名称及作用域限定符,比如c::a。 2. 使用using关键字将命名空间中的成员引入,比如using c::a。 3. 使用using namespace命名空间名称引入命名空间的所有成员,比如using namespace c。 其中,方法一是通过在成员前加上命名空间名称和作用域限定符来访问命名空间中的成员。方法二是通过using关键字将特定的成员引入,使得可以直接使用该成员。方法三是使用using namespace关键字引入整个命名空间的所有成员,使得可以直接使用命名空间中的所有成员。 需要注意的是,在使用命名空间时,可以采用方法一、方法二或方法三的任意一种方式,具体选择哪种方式取决于实际需求和代码的清晰度。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *3* [C++命名空间](https://blog.csdn.net/zhang21722668/article/details/83869631)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] - *2* [C++命名空间(namespace)的使用](https://blog.csdn.net/qq_43533553/article/details/123257675)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值