C++命名空间

资料摘自《C++ Primer Plus》

c++关于全局变量和局部变量的规则定义了一种名称空间层次。每个声明区域都可以声明名称,这些名称独立于其他声明区域中声明的名称。在一个函数中声明的局部变量不会与在另一个函数中声明的局部变量发生冲突。
使用关键字namespace创建名称空间
namespace Jack {
 double pail;
 void fetch();
 int pal;
 struct Well {...};
}
namespace Jill {
 double bucket(double n) {...}
 double fetch;
 int pal;
 struct Hill{...};
}
名称空间可以是全局的,也可以位于另一个名称空间中,但不能位于代码块中。除用户定义的名称空间外,存在另一个名称空间--全局名称空间。
访问名称空间中的名称
Jack::pail = 2.34;
Jill::Hill mole;
Jack::fetch();
使用using
using Jill::fetch; //using声明:使该空间下指定的名称可用
using namespace Jack; //using编译指令:使该空间下所有的名称都可用
using namespace std;
fetch(); //调用的是Jack::fetch();
cout << pal << endl; //使用的是Jack::pal
名称空间嵌套
namespace elements {
 namespace fire {
  int flame; //即elements::fire::flame
  ...
 }
 float water;
}
未命名的名称空间
namespace {
 int ice;
 int bandycoot;
}


示例
namespace Jill {
 double bucket(double n) {...}
 double fetch;
 struct Hill {...};
}
char fetch; //全局空间
int main() {
 using namespace Jill;
 Hill Thrill; //使用Jill::Hill
 double water = bucket(2); //使用Jill::bucket(double)
 double fetch; //局部fetch
 std::cin >> fetch;
 std::cin >> ::fetch; //全局空间的fetch
 std::cin >> Jill::fetch; //Jill空间下的fetch
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值