C++命名空间的玩法

为了解决名称冲突的问题,C++引入了namespace,本期就对namespace的玩法进行粗浅的探究。
命名空间的玩法大概有两种:一种使用using关键字去修饰,一种是使用作用域运算符(::)。

1.使用作用域运算符:

代码如下:
1729668-20190704124506819-270885716.png
通读代码,可以看到One和Two中都共同包含一个叫inf的成员,如果不加作用域运算符,则编译器无法判断inf是哪个空间的成员。x虽然为Two私有,但如果不加作用域运算符,编译器依然访问不到,这个特性和类的成员函数很类似。

2.using关键字修饰整个namespace:

代码如下:
1729668-20190704122634608-1594174481.png
在第8行中,用using修饰了One整个命名空间,则使用到One空间中的成员时,就不需要再加作用域运算符,从而减轻了敲代码的负担。

但是实现One空间中的print函数时,需要加上作用域运算符,来说明print函数是属于One的。否则,编译器会将print函数当作普通函数来看待。

3.using关键字还可以对namespace里的单个成员进行修饰:

代码如下:
1729668-20190704130403679-271612456.png
第11行中,用了using单独修饰了成员inf,所以后面的inf可以不用加作用域运算符就可以访问到。但是若想访问One中的另一个成员M,就需要再单独加上作用域运算符了,如果不加作用域的话,就无法访问到。

4.namespace可以嵌套定义:

代码如下:
1729668-20190704153959229-1070267021.png

转载于:https://www.cnblogs.com/shing-virus/p/11131249.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值