C++中Using关键词的三种应用

  1. 引入单个名称
  1. 将某个单独名字引入到当前域中。不再需要使用作用域限定符::

例如:

using std::string;

string s = “hello,world”;

  1. using声明可以改变派生类对父类成员的访问控制。

例如:

class Base{

protected:

       int n1;

       int n2;

};

class Derived: private Base{   //私有继承

public:

       using Base::n1; //在当前域中引入了父类的保护成员,在当前域中可以访问。

};

class DerivedDouble: public Derived {   //公有继承,所以Derived的子类还是能够访问n1

};

int main() {

       Derived d;

       DerivedDouble dd;

       d.n1 = 1;

       d.n2 = 2;         //错误,n2是Base类的私有变量,不能访问

       dd. n1 = 3;

       std::cout << d.n1 << std::endl;

       return 0;

}

  1. 引入命名空间,语法Using XXX

常见的例子是:

using namespace std; //将我们常用的std命名空间展开,以后cout, endl等就不需要再用std::来修饰。

  1. 类型重定义,相当于typedef

语法:

using alias = typename;//用别名替换原始类型

新语法:

using ULL = unsigned long long;

using func = void(*) (int, int);

上面两个C++语句对应的老式语法如下:

typedef unsigned long long ULL;

typedef void(*func)(int, int);

typedef存在一些限制。当我们想实现一个将int映射到任意类型的模板。类似如下功能:

typedef std::map<int, int> mapIntInt;

typedef std::map<int, bool> mapIntBool;

typedef std::map<int, std::string> mapIntString;

……

在老式C++98/03中,需要如下实现:

template <class Val>

struct mapInt{

       typedef std::map<int ,Val> type;

};

int main(){

       mapInt<int>::type intmap;

       mapInt<bool>::type boolmap;

       mapInt<std::string>::type stringmap;

       return 0;

}

在C++11中,可以直接使用using重新定义模板。

template <class Val>

using mapInt =  std::map<int , Val>;

int main()

{

       mapInt<int> intmap;

       mapInt<bool> boolmap;

       mapInt<std::string> stringmap;

       return 0;

}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/diannao/8824.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

楼宇自控远程I/O革新BACnet/IP模块在暖通空调系统

在现代智能建筑的浪潮中&#xff0c;BACnet/IP分布式远程I/O控制器正逐步成为暖通空调&#xff08;HAVC&#xff09;系统升级转型的得力助手。本文将以某大型商业综合体为例&#xff0c;揭示BACnet/IP I/O模块如何在复杂多变的环境中发挥其独特优势&#xff0c;实现HVAC系统的智…

libcity笔记:添加新模型(以RNN.py为例)

创建的新模型应该继承AbstractModel或AbstractTrafficStateModel 交通状态预测任务——>继承 AbstractTrafficStateModel类轨迹位置预测任务——>继承AbstractModel类 1 AbstractTrafficStateModel 2 RNN 2.1 构造函数 2.2 predict 2.3 calculate_loss

互联网洗鞋工厂实现新时代下的家庭洗护服务;

互联网洗鞋工厂实现新时代下的家庭洗护服务; 拽牛科技洗护系统以智慧城市系统为依托&#xff0c;洗鞋工厂为中心&#xff0c;利用互联网&#xff0b;社区服务商模式&#xff0c;实现了新时代下的家庭洗护服务&#xff0c; 将客户&#xfe63;&#xfe63;社区服务商&#xfe63…

ansible内置主机变量及魔法变量

目录 概述实践代码执行效果 概述 简单实用版本 实践 代码 --- - name: Get IP Addresshosts: allgather_facts: notasks:- name: Get IP Addressansible.builtin.setup:register: host_ip- name: Print IP Addressansible.builtin.debug:msg: "The IP Address of {{ a…

基于Spring Boot框架实现大学生选课管理系统

文章目录 源代码下载地址项目介绍项目功能界面预览 项目备注源代码下载地址 源代码下载地址 点击这里下载源码 项目介绍 项目功能 教务处管理 开课、开班审批&#xff0c;排课处理&#xff0c;班级操作&#xff0c;选课时间段管理** 使用了sql解决了开课开班的时间段的冲突…

水电抄表方案是什么?

1.概述&#xff1a;水电抄表方案的重要性 水电抄表方案是现代城市管理中不可或缺的一部分&#xff0c;它涉及到了能源管理、费用结算和公共服务等多个领域。传统的抄表方式需要工作人员上门服务&#xff0c;费时费力且效率低下。随着科技的发展&#xff0c;智能化的水电抄表方…

【高阶数据结构】图--邻接矩阵、邻接表、BFS、DFS、Kruskal、Prime

图--邻接矩阵、邻接表、BFS、DFS、Kruskal、Prime 一、图的概述1、概述&#xff08;纯理论部分&#xff09;2、邻接矩阵&#xff08;实现一个添加边的图&#xff09;&#xff08;1&#xff09;思路介绍&#xff08;2&#xff09;代码部分&#xff08;3&#xff09;测试部分 3、…

类和对象test

一、初始化列表 引言&#xff1a; 虽然上述构造函数调用之后&#xff0c;对象中已经有了一个初始值&#xff0c;但是不能将其称为对对象中成员变量 的初始化&#xff0c;构造函数体中的语句只能将其称为赋初值&#xff0c;而不能称作初始化。因为初始化只能初始 化一次&#x…

【华为】AC直连二层组网隧道转发实验配置

【华为】AC直连二层组网隧道转发实验配置 实验需求拓扑配置AC数据规划表 AC的配置顺序AC1基本配置(二层通信)AP上线VAP组关联--WLAN业务流量 LSW1AR1STA获取AP的业务流量 配置文档 实验需求 AC组网方式&#xff1a;直连二层组网。 业务数据转发方式&#xff1a;隧道转发。 DHC…

SpringCloudAlibaba:3.2dubbo的高级特性

启动时检查 简介 Dubbo在启动时检查依赖得服务是否可用&#xff0c;不可用时会抛出异常&#xff0c;阻止Spring初始化完成&#xff0c;以便上线时&#xff0c;能及早发现问题 建议 如果你的Spring容器是懒加载的&#xff0c;或者通过API编程延迟引用服务&#xff0c;请关闭ch…

SpringBoot 使用 @RequiredArgsConstructor(onConstructor_ = @Autowired) 报错解决

若使用 RequiredArgsConstructor(onConstructor_ Autowired) 启动报错&#xff0c;或者爆红可以使用以下方法解决 1. 安装或启用 Lombok插件 2. 检查 Lombok 版本 3. 若 onConstructor_ 爆红&#xff0c; 可能是IDEA中文软件包冲突 4. 若以上还是不行&#xff0c;可以添加…

Django和Python版本兼容表

记录一下Python和Django版本的兼容性对照表&#xff0c;如果还在维护老的项目可以作参考&#xff1a; Django 版本Python 版本备注5.1 3.10, 3.11, 3.125.0 3.10, 3.11, 3.12最低要求Python3.104.23.8, 3.9, 3.10, 3.11, 3.12 (从4.2.8开始)4.1 3.8, 3.9, 3.10, 3.11 (…

模方已经安装了3dmax,也装了插件,为什么一直显示没有插件?

答&#xff1a;主要是联动2018版本&#xff0c;然后插件在模方安装时候&#xff0c;会有选项自动安装联动插件&#xff0c;SketchUp&#xff08;建议版本为2019&#xff09;&#xff0c;3dsMax&#xff08;建议版本为2018&#xff09; 模方是一款针对实景三维模型的冗余碎片、…

SpringBoot框架如何接入RocketMQ?

目录 一、SpringBoot框架介绍 二、RocketMQ介绍 三、RocketMQ的应用场景 四、SpringBoot框架如何接入RocketMQ 一、SpringBoot框架介绍 Spring Boot是一个开源的Java框架,它基于Spring框架,旨在简化Java应用程序的开发。Spring Boot通过自动化配置和约定优于配置的原则,大…

AVFilterLink的channels设置

下面这样一条命令 ffmpeg -i /Users/user/video/mp4/output.wav -ac 1 /Users/user/video/mp4/output1.wav 我们会形成下面这样的图 图1 现在有个问题link4的channel怎么设置的&#xff1f; static int pick_format(AVFilterLink *link, AVFilterLink *ref){link->cha…

猫头虎分享已解决Bug || Node.js安装失败Error: unable to connect to https://nodejs.org/猫头虎

猫头虎分享已解决Bug || Node.js安装失败Error: unable to connect to https://nodejs.org/猫头虎 博主猫头虎的技术世界 &#x1f31f; 欢迎来到猫头虎的博客 — 探索技术的无限可能&#xff01; 专栏链接&#xff1a; &#x1f517; 精选专栏&#xff1a; 《面试题大全》 — …

数据结构(二)关于空间的使用

数据结构&#xff08;二&#xff09;关于空间的使用 要点&#xff1a;解决问题的效率跟空间的利用效率有关 思考&#xff1a;如何空间的利用效率 01 如何空间的利用效率 参考&#xff1a;递归导致的栈溢出 Exception in thread "main" java.lang.StackOverflowE…

11.结构化开发

1.无直接耦合 2.数据耦合 值耦合 3.标记耦合 数据结构耦合 4.控制耦合 逻辑 顺序耦合 5.外部耦合 软件之外的联系 6.公共耦合 指通过一个公共的数据环境 7.内容耦合 一个模块直接用另一个模块的数据 8.偶然内聚 指一个模块的处理没有任何关系 9.逻辑内聚 执行若干个逻辑相似的功…

JVM的垃圾回收

JVM简介 JVM 是 Java Virtual Machine 的简称&#xff0c;意为 Java虚拟机。 虚拟机:是指通过软件模拟的具有完整硬件功能、运行在一个完全隔离的环境中完整计算机系统 1.JVM的内存区域划分 jvm是一个java进程 每一个java进程就是一个jvm实例 一个进程运行过程中 就要从操作系…

VscodeC/C++环境配置

引言 vscode是一款非常好用的编辑器&#xff0c;集成了大量的插件&#xff0c;具有很高的自由度&#xff0c;因此广受大家的喜爱。但是他本身是不带编译器的&#xff0c;因此如果要使用vscode来编译C/C程序的话&#xff0c;我们需要额外安装编译器并且为vscode配上环境。 编译…