C++编程思想 第1卷 第10章 名字控制 名字空间 使用名字空间 使用声明

可以用使用声明一次性引入名字到当前范围内。

这种方法不像using指令那样把那些名字当成当前范围的全局名来看待,using
声明是在当前范围之内进行的一个什么,这就意味着在这个范围内它可以不顾
来自using指令的名字

 

//: C10:UsingDeclaration.h
// From Thinking in C++, 2nd Edition
// Available at http://www.BruceEckel.com
// (c) Bruce Eckel 2000
// Copyright notice in Copyright.txt
#ifndef USINGDECLARATION_H
#define USINGDECLARATION_H
namespace U {
  inline void f() {}
  inline void g() {}
}
namespace V {
  inline void f() {}
  inline void g() {}
} 
#endif // USINGDECLARATION_H ///:~


//: C10:UsingDeclaration1.cpp
// From Thinking in C++, 2nd Edition
// Available at http://www.BruceEckel.com
// (c) Bruce Eckel 2000
// Copyright notice in Copyright.txt
#include "UsingDeclaration.h"
void h() {
  using namespace U; // Using directive
  using V::f; // Using declaration
  f(); // Calls V::f();
  U::f(); // Must fully qualify to call
}
int main() {} ///:~

 

using声明给出了标识符的完整的名字,但没有了类型方面的信息
可以把using声明放在任何一般的声明可以出现的地方
using声明与普通声明只有一点不同:using声明可以引起有关函数用相同的
参数类型来重载

无输出

using声明也可以出现在一个名字空间内,其作用与在其他地方时一样:

 

//: C10:UsingDeclaration2.cpp
// From Thinking in C++, 2nd Edition
// Available at http://www.BruceEckel.com
// (c) Bruce Eckel 2000
// Copyright notice in Copyright.txt
#include "UsingDeclaration.h"
namespace Q {
  using U::f;
  using V::g;
  // ...
}
void m() {
  using namespace Q;
  f(); // Calls U::f();
  g(); // Calls V::g();
}
int main() {} ///:~

 

一个using声明是一个别名,它允许在不同的名字空间声明同样的函数
如果不想由于引入不同名字空间而导致重复定义一个函数时,可以使用using
声明,它不会引起如何二义性和重复

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值