C++的explicit关键字
来源:互联网 发布:php 爬虫 解析html 编辑:程序博客网 时间:2024/05/19 03:43
C++中一个参数的构造函数(或者除了第一个参数以外其余参数都有默认值的多参构造函数),承担了两个角色。一是个构造器,二是个默认且银行的类型转换操作符。
所以有时候我们写下如 AAA = XXX
,这样的代码,切恰好 XXX的数据类型正好是 AAA 单参数构造器的参数类型,这时候编译器就自动调用这个构造器,创建一个 AAA 的对象。
这样看起来很酷,很方便。但在某些情况下(见下面权威的例子),却违背了我们(程序员)的本意。这时候就要在这个构造器前面加上explicit
修饰,指定这个构造器只能被明确的调用/使用,不能作为类型转换操作被隐含的使用。
解析:
explicit构造函数是用来方式隐式转换的,请看下面的代码:
class Test1{public: Test1(int n) { m_nNum = n; }//普通构造函数privite: int m_nNum;};class Test2{public: explicit Test2(int n) { m_nNum = n; }//explicit是(显示)构造函数private: int m_nNum;}//....void main(){ Test1 t1 = 12;//隐式调用其构造函数,成功 Test2 t2 = 12;//编译错误,不能隐式调用其构造函数 Test2 t2(12);//显示调用成功 return ;}
一些疑问:良好的编码习惯里应该都只显示的调用对象的构造函数,所以这种 强制的显示调用构造函数的限制具体有什么用呢?
0 0
- C++:explicit 关键字
- C++explicit关键字
- 【C++】explicit关键字
- C++explicit关键字
- 【C++】explicit关键字
- 【C++】explicit关键字
- 【C++】explicit关键字
- explicit关键字的使用
- explicit 关键字的使用
- C++ 的explicit关键字
- C++的explicit关键字
- explicit关键字的用途
- explicit关键字的使用...
- 关键字explicit的作用
- C++的explicit关键字
- C++的explicit关键字
- C++的explicit关键字
- explicit 关键字的用法
- GCC编译器一些参数区别(-I -l -L)
- MySql出现too many connection
- os 10.11.5 安装最新的Cocopods 解决方案
- 演示DateFormat
- part1:再论NSString属性的三观
- C++的explicit关键字
- BW中的激活程序
- ReactNative-Modal(模态窗口)类似Android中PopupWindow弹窗
- Android开发之资源文件存储
- 建议59:不要在不恰当的场合下引发异常
- spring tool suite新建spring starter project,写一个简单的html页面并运行出来
- 对话框
- Android中事件分发机制的总结
- ADB常用命令