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

C++中的explicit

C++中的explicit

一. C++中构造函数的隐式类型转换

  1. 隐式类型转换规则,遵循不损失精度的原则
    请添加图片描述
  2. 当类类型遇到隐式类型转换的时候,会有一些意外情况产生,比如初始化一个类的对象的时候使用 = 的时候,为了避免产生这样的隐式类型转换出现了关键字explicit
    ClassA a = value;
    

二. explicit 关键字的用法

  1. 在构造函数声明的时候使用,比如
    class Test
    {
    	int i ;
    public:
        explicit Test(int i=0):i(i){};
    };
    
  2. 我们观察一下加了explicit之后定义对象过程中的变化
    Test t1(1);   //没有问题
    Test t2 = 11; //报错!!! error: no viable conversion from 'int' to 'Test' 
    Test t3 = t2; //没有问题 因为执行的是拷贝构造函数Test(Test& t),这个函数是没有explicit声明的
    
  3. 这个现象表示,执行Test构造函数的时候只能显性传值,不能用赋值符号的方式传递构造函数的参数
  4. 那有没有人问为什么 Test t3 = t2; 就可以,这里不是用赋值运算符了吗?这里调用的是拷贝赋值函数,不是我们加explicit声明的构造函数,所以这里是可以执行的。同样的如果对拷贝构造函数也加了explicit声明,Test t3 = t2; 这句也会报语法错误,只能通过Test t3(t2);这种方式拷贝构造

相关文章:

  • Qt中的事件处理
  • 使用二阶构造实现计算器页面的构造过程
  • Linux内核的CodingStyle
  • 常见面试题及面试准备阶段要思考的问题
  • Qt中事件的传递过程
  • Qt事件初探-发现事件
  • Qt中TCP通信的实现
  • ubuntu下MQTT的移植安装
  • MQTT协议 发布/订阅 机制初探 - (模拟物联网传感器设备和控制模块间的通信)
  • MQTT初探
  • VScode快捷键
  • Linux C的MQTT测试代码编写 - 跨主机的MQTT客户端通信
  • Linux系统嵌入式设备的串口通信
  • Anaconda在Windows的安装
  • notebook修改默认打开的路径
  • [数据结构]链表的实现在PHP中
  • Cookie 在前端中的实践
  • Effective Java 笔记(一)
  • IDEA 插件开发入门教程
  • iOS小技巧之UIImagePickerController实现头像选择
  • Netty+SpringBoot+FastDFS+Html5实现聊天App(六)
  • PAT A1017 优先队列
  • quasar-framework cnodejs社区
  • Service Worker
  • vue 个人积累(使用工具,组件)
  • Vue实战(四)登录/注册页的实现
  • Webpack 4x 之路 ( 四 )
  • 从输入URL到页面加载发生了什么
  • 深入体验bash on windows,在windows上搭建原生的linux开发环境,酷!
  • 时间复杂度与空间复杂度分析
  • 阿里云服务器购买完整流程
  • !$boo在php中什么意思,php前戏
  • #git 撤消对文件的更改
  • #LLM入门|Prompt#1.8_聊天机器人_Chatbot
  • #QT(智能家居界面-界面切换)
  • #经典论文 异质山坡的物理模型 2 有效导水率
  • $().each和$.each的区别
  • (1/2)敏捷实践指南 Agile Practice Guide ([美] Project Management institute 著)
  • (独孤九剑)--文件系统
  • (二)【Jmeter】专栏实战项目靶场drupal部署
  • (附源码)spring boot基于Java的电影院售票与管理系统毕业设计 011449
  • (附源码)springboot 个人网页的网站 毕业设计031623
  • (附源码)springboot车辆管理系统 毕业设计 031034
  • (机器学习-深度学习快速入门)第三章机器学习-第二节:机器学习模型之线性回归
  • (一)Dubbo快速入门、介绍、使用
  • (转)h264中avc和flv数据的解析
  • *_zh_CN.properties 国际化资源文件 struts 防乱码等
  • .NET BackgroundWorker
  • .NET Core日志内容详解,详解不同日志级别的区别和有关日志记录的实用工具和第三方库详解与示例
  • .NET CORE使用Redis分布式锁续命(续期)问题
  • .net 调用php,php 调用.net com组件 --
  • .NET 将混合了多个不同平台(Windows Mac Linux)的文件 目录的路径格式化成同一个平台下的路径
  • .NET/C# 判断某个类是否是泛型类型或泛型接口的子类型
  • .NET/C# 使用反射调用含 ref 或 out 参数的方法
  • .NETCORE 开发登录接口MFA谷歌多因子身份验证