当前位置: 首页 > news >正文

c++ using使用

目录

  • 一. using声明
    • 1.using声明可使得指定的标识符可用。
    • 2.using声明碰到函数重载
  • 二. using编译指令
  • 三. 命名空间使用

一. using声明

1.using声明可使得指定的标识符可用。

namespace A{int paramA = 20;int paramB = 30;void funcA(){ cout << "hello funcA" << endl; }void funcB(){ cout << "hello funcA" << endl; }
}void test(){//1. 通过命名空间域运算符cout << A::paramA << endl;A::funcA();//2. using声明using A::paramA;using A::funcA;cout << paramA << endl;//cout << paramB << endl; //不可直接访问funcA();//3. 同名冲突//int paramA = 20; //相同作用域注意同名冲突
}

2.using声明碰到函数重载

namespace A{void func(){}void func(int x){}int  func(int x,int y){}
}
void test(){using A::func;  //--------func();func(10);func(10, 20);
}

如果命名空间包含一组用相同名字重载的函数,using声明就声明了这个重载函数的所有集合

二. using编译指令

using编译指令使整个命名空间标识符可用.

namespace A{int paramA = 20;int paramB = 30;void funcA(){ cout << "hello funcA" << endl; }void funcB(){ cout << "hello funcB" << endl; }
}void test01(){using namespace A;cout << paramA << endl;cout << paramB << endl;funcA();funcB();//不会产生二义性int paramA = 30;cout << paramA << endl;  //30
}namespace B{int paramA = 20;int paramB = 30;void funcA(){ cout << "hello funcA" << endl; }void funcB(){ cout << "hello funcB" << endl; }
}void test02(){using namespace A;using namespace B;//二义性产生,不知道调用A还是B的paramA//cout << paramA << endl;
}

**注意:**使用using声明或using编译指令会增加命名冲突的可能性。也就是说,如果有名称空间,并在代码中使用作用域解析运算符,则不会出现二义性。

三. 命名空间使用

我们刚讲的一些东西一开始会觉得难一些,这些东西以后还是挺常用,只要理解了它们的工作机理,使用它们非常简单。
需要记住的关键问题是当引入一个全局的using编译指令时,就为该文件打开了该命名空间,它不会影响任何其他的文件,所以可以在每一个实现文件中调整对命名空间的控制。比如,如果发现某一个实现文件中有太多的using指令而产生的命名冲突,就要对该文件做个简单的改变,通过明确的限定或者using声明来消除名字冲突,这样不需要修改其他的实现文件。

相关文章:

  • 通信原理绪论
  • JDBC工具类的三个版本
  • 【python】json解析:invalid literal for int() with base 10: ‘\“\“‘“
  • 工厂节能新路径:精准节能的深度剖析
  • YOLO目标检测算法评估标准
  • C++STL——stack,queue
  • Python3(30) 正则表达式
  • 两数相加(2)
  • Profinet转CanOpen网关,打破协议壁垒的关键技术
  • 国内特殊车辆检测数据集VOC+YOLO格式4930张3类别
  • NVMe控制器IP设计之接口模块
  • Python核心编程深度解析:作用域、递归与匿名函数的工程实践
  • Python自动化-python基础(下)
  • C++中的static_cast:类型转换的安全卫士
  • 警备,TRO风向预警,In-N-Out Burgers维权风暴来袭
  • 基于Python的在线教育平台的设计与实现
  • 红黑树删除的实现与四种情况的证明
  • 探秘 Canva AI 图像生成器:重塑设计创作新范式
  • 编写第一个MCP Server之Hello world
  • 杆件的拉伸与压缩变形
  • 中方发布会:中美经贸高层会谈氛围是坦诚的、深入的、具有建设性的
  • 龙湖集团:今年前4个月销售220.8亿元,4月新增两块土地储备
  • 咸宁市委常委、市纪委书记官书云调任湖北省司法厅副厅长
  • 体坛联播|郑钦文收获红土赛季首胜,国际乒联公布财报
  • 习近平会见古共中央第一书记、古巴国家主席迪亚斯-卡内尔
  • 2025年度上海市住房城乡建设管理委工程系列中级职称评审工作启动