命名空间关键知识点

文章详细介绍了C++中的命名空间特性,包括只能在全局范围声明、可以互相嵌套、可随时添加成员。使用命名空间::成员进行调用,匿名命名空间限制在当前源文件。此外,可通过别名简化长命名空间,using声明允许选择性或整体引入命名空间,但需注意可能的命名冲突。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

  1. 命名空间只能在全局范围内声明,不能在函数内声明
  2. 命名空间之间可以互相嵌套
  3. 命名空间是开放的,可以随时为其加入新的成员。以下方式可以为A加入新成员
	namespace A{
		int a=5;  
	} 
	很多行代码
	namespace A{
	int b=6;  
	}
  1. 命名空间的声明和实现可以分开
namespace A{
	int a = 5;
	void func(int a);
}

void A::func(int a){
	代码
}
  1. 这个本来该写在第一点来着,调用命名空间内的方法或变量,使用 命名空间::方法或变量名来调用
  2. 匿名命名空间仅可以在当前源文件中使用
namespace{
	代码
}
  1. 可以给命名空间起别名
namespace verylongname{
	代码
}
namespace short = verylongname;

这里的等号并不是赋值,而是取了别名
8. using可以规定命名空间的使用权限

namespace A{
	int a = 10;
	int funa(){
		code;
	}
}
using A::a;
using A::funa;
cout << a << endl;
funa();
但要注意同名的变量
  1. using声明碰到函数重载仍然有效。当命名空间中出现多个名字一样但参数不同的方法,调用时不会有问题,using声明了这个重载函数的所有集合
    10.using声明整个命名空间
using namespace X; 在这里使用了整个命名空间的名字,所以这个命名空间的所有变量函数都可以直接使用

但要注意,声明整个命名空间,强调的是命名空间,而不是里面的变量和方法,在同一文件中出现同名的新建变量和方法不会有冲突。而是优先使用新建的

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值