【C++】隐式类型转换和 explicit关键字
2024-10-19 12:48:45
来自:黄邦勇帅
1. 当类中带有一个参数的构造函数时,将执形对象的隐式转换,比如有类 A,有一个带有一个参数的构造函数A(int i){}则当出现语句A m=1;就会调用带有一个参数的构造函数来创建对象m,也就是将语句转换为A m(1)的形式。
2. 如果有一个函数,比如 void f(A j){}这个函数需要一个类A 的对象作为参数,但是当调用语句为f(2)时,同样能调用这个函数,这时函数的形 参A j 被解释为,A j=2 即会隐式调用带有一个参数的构造函数来创建一个对象j。
但是有一种形式的函数定义当出现语句 f(2)这样的调用时会出错,就是函数 f 定义的形式为 void f(A &j){}定义一个接受一个实参的引用时会出错,具体原因不清楚。但这几种情况都能正确调用void f(A j){},void f(const A j){};void f(constA & j){}。
3. 如果不需要这种隐式的类型转换则在构造函数前使用关见字 explicit,这个关见字只能用于构造函数前。如果在构造函数前使用explicit 关见字,这时语句 A m=1 和 f(2)都将出错。
4.声明为explicit的构造函数不能在隐式转换中使用。
最新文章
- 高性能javascript(记录二)
- C#访问Azure的资源
- Different types of keystore in Java Overview
- Modoer列表页性能分析及优化
- centos修改时区,设置时间
- 初试ubuntu14.4问题集锦
- Android Studio 配置SVN实现代码管理
- ORACLE Recyclebin管理及flashback recyclebin中的对象
- 关于 dos 下 npm 命令的使用
- matlab中 mcc、mbuild和mex命令详解
- Windows下查看硬连接引用技术
- VueJs 源码分析 ---(二)实力化生命周期,以及解析模版和监听数据变化
- [转] 使用babel-plugin-react-css-modules简化CSS Modules的使用
- JDK8新增接口的默认方法与静态方法
- 蓝牙协议分析(3)_BLE协议栈介绍
- 我的Java之旅 第六课 JAVA WEB 请求与响应
- C语言四舍五入
- 设计模式 (二)——观察者模式(Observer,行为型)
- 如何利用 Jmeter 测试上传文件
- vue 浏览器页面刷新时执行一段代码
热门文章
- BZOJ 4011 HNOI2015 落忆枫音 DAG上的dp(实际上重点在于分析)
- UVA 11883 Repairing a Road(最短路径+暴力枚举)
- Internet History,Technology and Security
- lintcode-109-数字三角形
- Ubuntu如何进入命令模式
- python practive
- hihoCoder #1872 : Pythagorean triple
- 【CF Round 434 B. Which floor?】
- Codeforces Round #348 (VK Cup 2016 Round 2, Div. 2 Edition) B
- SICAU-OJ:要我唱几首歌才能够将你捕捉