命名空间 namespace 与 using

命名空间 namespace 与 using

namespace

定义 
	解决变量命名冲突问题
	不能在代码块中定义 
	可以在全局或命名空间中定义  
	同名命名空间会进行合并 
	未命名的命名空间 
		相当于该文件的全局变量 

using 声明和编译

定义 
	直接使用命名空间中定义的方法等,而不用使用前缀	
声明命名空间
namespace jblock {
    int age;
	int num;
}
使用1 命名空间::成员使用2 using声明使用3 using编译
jblock::age = 1;using jblock::age;
age // 可以不用前缀
jblock::num; // 需要前缀
using namespace jblock;
age // 都不用前缀
num
声明嵌套命名空间
namespace space {
    namespace s1 { // 嵌套声明 
        int age
    }
}
//使用 
space::s1::age;
命名空间中使用using
namespace space {
    using std::cout;
    using namespace space1;
}
// 使用 
space::cout;
using namespace space;时 也包含了 using namespace space1;
匿名命名空间
namespace  {
    int age
} 
// 使用 age; 相当于该文件的全局变量
using编译 (using namespace std这种格式) 注意事项
//如果跟全局变量重名 的几种情况 
// 情况1 
namespace test {int age};  // 命名空间中age
using namepace test;  // 期望可直接使用age  不用test::age格式
int age; // 又声明了全局变量age
{
    int age // 又声明了局部变量age
    age   // ===> 局部变量
    ::age // ===> 全局变量
    test::age  // 命名空间中变量
}
// 情况2  
using namepace test; //同上
int age; // 同上
{
    ::age  // ===> 全局变量
    age == test::age  // 不同于情况1的点
}
using声明
 using std::cout; 只取std命名空间中 cout 方法  
 	使特定的成员可用    
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

hamburgerV

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值