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

【C++学习笔记 18】C++中的隐式构造函数

举个例子

#include <iostream>
#include <string>using String = std::string;class Entity{
private:String m_Name;int m_Age;
public:Entity(const String& name):m_Name(name), m_Age(-1) {}Entity(int age) : m_Name("UnKnown"), m_Age(age) {}
};int main()
{Entity a("InfiHeart");Entity b(22);std::cin.get();
}

定义一个类,并写两个简单的构造函数,在主函数中可以用上述方法创建两个实例,也可以用下面的方法创建

int main()
{Entity a = String("InfiHeart");Entity b = 22;std::cin.get();
}

这里直接让字符串和整形的数字等于类,却可以创建成功,这就是隐式转换或隐式构造函数。它隐式的把"InfiHeart"或22转化为Entity对象,因为其中包含接受字符串或整数的构造函数。
另一个例子是

void PrintEntity(const Entity& entity)
{//printing
}int main()
{PrintEntity(22);std::cin.get();
}

如果定义一个传入Entity对象的函数,可以直接调用函数并传入整形参数。
但如果使用PrintEntity("InfiHeart");则会报错,原因是隐式转换只允许发生一次,这里的"InfiHeart"char数组,距离创建Entity对象还需一次转换。

explicit关键字

如果只想用显式的格式创建对象,那么可以在构造函数前面加上explicit关键字,这意味着这个构造函数不会隐式转换。


教程来源:The Cherno C++ 教程

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • 什么是负载均衡?负载均衡器如何运作?
  • Python 文件目录操作,以及json.dump() 和 json.load()
  • 全志Android8, Android 10限制存储500M问题
  • 73、 dockerfile
  • web前端之实现霓虹灯背景魔术卡、旋转的背景动画、模糊效果、边框、变量、filter
  • 深入理解 go unsafe
  • 【教师视角】揭秘SmartEDA电路仿真:教学新利器,点亮学生电子梦想之路!
  • 【QuikGraph】图算法之TSP旅行商问题求解
  • 熟能生巧
  • spring揭秘00-ioc定义与ioc容器及集成工厂模式
  • 韩国服务器的性能如何提升
  • 系统数据库介绍及实践
  • springboot+vue生成word文件下载(最简单教程)
  • web前端之实现一只可爱的小杰尼乌龟、伪元素、动画
  • 什么是回滚
  • 2017 前端面试准备 - 收藏集 - 掘金
  • 2017前端实习生面试总结
  • 2019.2.20 c++ 知识梳理
  • conda常用的命令
  • Java IO学习笔记一
  • Javascript编码规范
  • JS数组方法汇总
  • Linux快速复制或删除大量小文件
  • Mocha测试初探
  • Perseus-BERT——业内性能极致优化的BERT训练方案
  • php中curl和soap方式请求服务超时问题
  • Python语法速览与机器学习开发环境搭建
  • React-生命周期杂记
  • Twitter赢在开放,三年创造奇迹
  • 如何解决微信端直接跳WAP端
  • 如何用vue打造一个移动端音乐播放器
  • 这几个编码小技巧将令你 PHP 代码更加简洁
  • 《TCP IP 详解卷1:协议》阅读笔记 - 第六章
  • 7行Python代码的人脸识别
  • Spring Batch JSON 支持
  • 京东物流联手山西图灵打造智能供应链,让阅读更有趣 ...
  • ​​​​​​​​​​​​​​汽车网络信息安全分析方法论
  • ​人工智能之父图灵诞辰纪念日,一起来看最受读者欢迎的AI技术好书
  • #中的引用型是什么意识_Java中四种引用有什么区别以及应用场景
  • (4)(4.6) Triducer
  • (AngularJS)Angular 控制器之间通信初探
  • (MIT博士)林达华老师-概率模型与计算机视觉”
  • (阿里云在线播放)基于SpringBoot+Vue前后端分离的在线教育平台项目
  • (翻译)terry crowley: 写给程序员
  • (附源码)php新闻发布平台 毕业设计 141646
  • (附源码)springboot 房产中介系统 毕业设计 312341
  • (附源码)springboot 校园学生兼职系统 毕业设计 742122
  • (附源码)springboot教学评价 毕业设计 641310
  • (附源码)计算机毕业设计高校学生选课系统
  • (四) 虚拟摄像头vivi体验
  • (算法)前K大的和
  • (五)activiti-modeler 编辑器初步优化
  • (一)使用IDEA创建Maven项目和Maven使用入门(配图详解)
  • (转载)利用webkit抓取动态网页和链接
  • (最优化理论与方法)第二章最优化所需基础知识-第三节:重要凸集举例