C++ using声明和using指示
2021/12/7 22:19:37
本文主要是介绍C++ using声明和using指示,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
目录- using 声明
- using 指示
- 头文件与using声明或者using指示
using 声明
using声明(using declaration),一次引入命名空间的一个成员。通过using声明,我们可以清楚知道程序中使用的到底是哪个名字。using声明不允许同名成员,如果有,就不能使用using声明,可以用全名替代。
有效范围从using声明处开始,一直到using声明所在的作用域结束为止,超出有效范围就要使用全名,同时外层作用域的同名实体将被隐藏。
using声明语句可以出现在global作用域、local作用域、namespace作用域以及class作用域。其中,在class作用域,using声明只能指向基类成员(如using Base::size)。
形式:
using namespace_name::member_name
例如,如果不使用using声明,声明成员std::cout, std::endl,那么每次访问时,就要带上其命名空间(形如"std::"):
#include <iostream> int main() { std::cout << "hello, c++" << std::endl; // 没有using声明的成员,需要手动编写完整名字 return 0; }
如果使用了using声明,那么其作用域内,访问对应成员时,无需"std::":
#include <iostream> using std::cout; using std::endl; int main() { cout << "hello, c++" << endl; // 已经添加了using声明,作用域内,无需再编写完整名字 return 0; }
using 指示
using 指示(using directive)将namespace的所有成员提升到作用域可见。允许定义同名变量,如果要访问global成员,就要使用"::i"这样的符号。
namespace blip { int i = 16, j = 15, k = 23; } int j = 0; int main() { // using指示,blip中名字被“添加”到global作用域 using namespace blip; ++i; // OK: blip::i 设为17 ++j; // 二义性错误:是blip::j, 还是global j? ++::j; // OK: global j 设为1 ++blip::j; // OK: blip::j设为16 int k = 97; // 当前局部k隐藏blip::k ++k; // OK: local k 设为98 return 0; }
头文件与using声明或者using指示
using声明和using指示会将名字注入到所有包含该头文件的文件中,而头文件应该只负责定义接口部分的名字,而不定义实现部分的名字。因此,通常情况下,头文件最多只在函数(local)作用域或namespace内使用using声明或指示。
注意: 在头文件中,尽量避免using指示,因为using指示会引入指定命名空间内所有成员名字,从而污染所有include该头文件的文件。
这篇关于C++ using声明和using指示的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-12-23DevExpress 怎么实现右键菜单(Context Menu)显示中文?-icode9专业技术文章分享
- 2024-12-22怎么通过控制台去看我的页面渲染的内容在哪个文件中呢-icode9专业技术文章分享
- 2024-12-22el-tabs 组件只被引用了一次,但有时会渲染两次是什么原因?-icode9专业技术文章分享
- 2024-12-22wordpress有哪些好的安全插件?-icode9专业技术文章分享
- 2024-12-22wordpress如何查看系统有哪些cron任务?-icode9专业技术文章分享
- 2024-12-21Svg Sprite Icon教程:轻松入门与应用指南
- 2024-12-20Excel数据导出实战:新手必学的简单教程
- 2024-12-20RBAC的权限实战:新手入门教程
- 2024-12-20Svg Sprite Icon实战:从入门到上手的全面指南
- 2024-12-20LCD1602显示模块详解