大家好,我是梁唐。
using声明
C++当中提供了两种机制(using声明和using编译指令)来简化对名称空间中名称的使用。using声明使特定的标识符keys,using编译指令使整个名称空间可用。
using声明由关键字using和被限定的名称组成:
- using A::fetch;
using声明将特定的名称添加到它所属的声明区域中,完成声明之后,我们可以使用fetch代替A::fetch了。
我们来看一个具体的例子:
- namespace A {
- double bucket(double n) {..}
- double fetch;
- struct Hill {...};
- }
- int main () {
- using A::fetch;
- cin >> fetch;
- fetch += 1.0;
- A::Hill hill;
- }
如果我们在函数外使用using声明,会将名称添加到全局名称空间中:
- using A::fetch;
- void test() {
- cout << fetch << endl;
- }
- int main () {
- cin >> fetch;
- fetch += 1.0;
- A::Hill hill;
- }
using编译指令
using声明只能使一个名称可用,而using编译指令可以使得所有的名称都可用。using编译指令由名称空间和它前面的using namespace组成,它使得名称空间中的所有名称都可用。
如:
- using namespace A;
在全局声明区域使用using编译指令,将使得该名称空间的名称全局可用。这种情况其实我们已经非常熟悉了,因为我们一直在用using namespace std。
我们也可以在函数当中使用using编译指令:
- int main () {
- using namespace A;
- }