命名空间

C/C++ 中,变量、函数和后面要学到的类都是大量存在的,这些变量、函数和类的名称将都存在于全局作
用域中,可能会导致很多冲突。使用命名空间的目的是 对标识符的名称进行本地化 ,以 避免命名冲突或名字 污染 namespace 关键字的出现就是针对
C/C++ 中,变量、函数和后面要学到的类都是大量存在的,这些变量、函数和类的名称将都存在于全局作
用域中,可能会导致很多冲突。使用命名空间的目的是 对标识符的名称进行本地化 ,以 避免命名冲突或名字 污染 namespace 关键字的出现就是针对这种问题的。
1 命名空间定义
定义命名空间,需要使用到 namespace 关键字 ,后面跟 命名空间的名字 ,然 后接一对 {} 即可, {} 中即为命名空间的成员。
举例:
namespace bit
{
        
// 命名空间中可以定义变量 / 函数 / 类型
int rand = 10 ;
int Add ( int left , int right )
{
return left + right ;
}
struct Node
{
struct Node * next ;
int val ;
};
}
//2. 命名空间可以嵌套
// test.cpp
namespace N1
{
int a ;
int b ;
int Add ( int left , int right )
{
return left + right ;
}
namespace N2
{
int c ;
int d ;
int Sub ( int left , int right )
{
return left - right ;
}
}
}
//3. 同一个工程中允许存在多个相同名称的命名空间 , 编译器最后会合成同一个命名空间中。
// ps :一个工程中的 test.h 和上面 test.cpp 中两个 N1 会被合并成一个
// test.h
namespace N1
{
int Mul ( int left , int right )
{
return left * right ;
}
}
2 命名空间使用
命名空间的使用有三种方式:
加命名空间名称及作用域限定符
int main ()
{
printf ( "%d\n" , N::a );
return 0 ;
}
使用 using 将命名空间中某个成员引入
using N::b ;
int main ()
{
printf ( "%d\n" , N::a );
printf ( "%d\n" , b );
return 0 ;
}
使用 using namespace 命名空间名称引入
using namespce N ;
int main ()
{
printf ( "%d\n" , N::a );
printf ( "%d\n" , b );
Add ( 10 , 20 );
return 0 ;
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值