C++中explicit关键字的使用
1.explicit函数介绍
- 作用:explicit构造函数是用来防止隐式转换的
- 实例1如下:
#include <iostream>using namespace std;// explicit函数的介绍!!!// explicit函数的作用:explicit构造函数是用来防止隐式转换的class Test1{public:Test1(int n){ // 普通隐式的构造函数num = n;}private:int num;};class Test2{public:explicit Test2(int n){ //explicit(显式)构造函数num = n;}private:int num;};int main(){Test1 t1 = 12; // 隐式调用其构造函数,成功// Test2 t2 = 12; 编译错误,不能隐式调用其构造函数Test2 t3(12); // 显式调用成功return 0;}
- Test1的构造函数带一个int型的参数,会隐式转换成调用Test1的这个构造函数。而Test2的构造函数被声明为explicit(显式),这表示不能通过隐式转换来调用这个构造函数,因此Test2 t2 = 12会出现编译错误。普通构造函数能够被隐式调用,而explicit构造函数只能被显式调用。
- 实例2如下:
class Test{public:Test():a(0){cout << "void\n";}explicit Test(int i):a(i){cout << "int\n";}Test(short s):a(s){cout << "short\n";}Test & operator=(int n){a = n;cout << "operator = ";}private:int a;};int main(){int n;Test a = n;return 0;}
- A:接受一个参数的构造函数允许使用赋值语句隐式调用来初始化对象; 而explicit构造函数只能被显式调用!所以,输出的是short!
C++中explicit关键字的使用相关推荐
- C++中explicit关键字的作用
C++中explicit关键字的作用 explicit用来防止由构造函数定义的隐式转换. 要明白它的作用,首先要了解隐式转换:可以用单个实参来调用的构造函数定义了从形参类型到该类类型的一个隐式转换. ...
- C++中explicit关键字用法
在C++类的实例化过程中,存在一种隐式转换,即可以用单个实参来调用的构造函数定义了从形参类型到该类类型的一个隐式转换. 一个简单的例子: #include <iostream> #incl ...
- C++ 中explicit关键字详解
展开 explicit关键字的作用 使用情况 类型转换函数 单操作数构造函数 同时出现拷贝构造函数和类型转换函数 拷贝构造函数 总结 参考文献 explicit关键字的作用 explicit关键字在写 ...
- 【转】认识 C++ 中的 explicit 关键字
C++ 中 explicit 关键字的作用 在C++中,explicit关键字用来修饰类的构造函数,被修饰的构造函数的类,不能发生相应的隐式类型转换,只能以显示的方式进行类型转换. explicit使 ...
- C++中的explicit关键字介绍
C++中的关键字explicit主要是用来修饰类的构造函数,被修饰的构造函数的类,不能发生相应的隐式类型转换,只能以显示的方式进行类型转换.类构造函数默认情况下声明为隐式的即implicit. 隐式转 ...
- c++中的explicit关键字
2007-05-11 14:42:00 | 作者: Admin ] c++中的explicit关键字用来修饰类的构造函数,表明该构造函数是显式的,既然有"显式"那么必然就有&quo ...
- 【c++】【转】c++中的explicit关键字
http://www.cnblogs.com/chio/archive/2007/09/17/895263.html c++中的explicit关键字用来修饰类的构造函数,表明该构造函数是显式(调用) ...
- 深入理解C++中的explicit关键字
深入理解C++中的explicit关键字 kezunhai@gmail.com http://blog.csdn.net/kezunhai C++中的explicit关键字只能用于修饰只有一个参数的构 ...
- C++中的explicit关键字用法
c++中的explicit关键字用来修饰类的构造函数,被修饰的类的构造函数不能进行隐式类型的转换,既然有"显式"那么必然就有"隐式",那么什么是显示而什么又是隐 ...
最新文章
- vscode php调试插件,构建VSCode开发调试环境(强大且实用的插件推荐)
- 唠唠SE的集合-10——Collections工具类
- Android开发-将自定义View布局到Layout中并调用
- 0xc000007b错误 - 解决方法备忘(vc red重装)
- ubuntu - 14.04,如何操作Gnome的任务栏?
- Servlet编程API
- Qt工作笔记-对QObject::connect函数进一步认识(重载)
- 你画我猜微擎版小程序源码
- Springboot高级特性——缓存
- (源码实例)通过层DIV实现,当鼠标放在链接上面,显示图片及文字
- linux水滴怎么抓包,tcpdump 抓包
- 语义分割之图像经镜像、翻转、裁剪后像素点的位置映射
- 将现有企业级模板项目从 Visual Studio .NET 2003 迁移到 Visual Studio 2005
- snipaste截长图
- 工业相机参数及选型参考
- Minecraft mod制作简易教程(五)——本地化和国际化
- 毛刺现象 java_记一次微服务耗时毛刺排查
- An Efficient Joint Training Framework for Robust Small-Footprint Keyword Spotting(2020)
- OpenMMLab实战营打卡-第3课
- 使用HP LaserJet Pro MFP M225-M226 PCL 6打印机,双面打印文档
热门文章
- java B2B2C 源码 多级分销Springcloud多租户电子商城系统- 整合企业架构的技术点(二)...
- Go语言学习笔记(一)Let's 干吧
- JS BOM 浏览器对象模型
- Java:OpenOffice方式实现Word转pdf/html/htm
- 为什么需要在TypedArray后调用recycle
- ***博客系统文章的数据库存储方式
- 分布式系统的复杂度度量思考
- Android Opengl
- 【转】如何编译一个内核 - Ubuntu方式
- 金山网盾监测:游戏玩家下载西西游戏外挂会中大量***