C++中explicit关键字如何使用
发表于:2026-11-01 作者:千家信息网编辑
千家信息网最后更新 2026年11月01日,这期内容当中小编将会给大家带来有关C++中explicit关键字如何使用,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。在C++中,我们有时可以将构造函数用作自动类型
千家信息网最后更新 2026年11月01日C++中explicit关键字如何使用
这期内容当中小编将会给大家带来有关C++中explicit关键字如何使用,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。
在C++中,我们有时可以将构造函数用作自动类型转换函数。但这种自动特性并非总是合乎要求的,有时会导致意外的类型转换,因此,C++新增了关键字explicit,用于关闭这种自动特性。即被explicit关键字修饰的类构造函数,不能进行自动地隐式类型转换,只能显式地进行类型转换。
注意:只有一个参数的构造函数,或者构造函数有n个参数,但有n-1个参数提供了默认值,这样的情况才能进行类型转换。
下面通过一段代码演示具体应用(无explicit情形):
1 /* 示例代码1 */ 2 class Demo 3 { 4 public: 5 Demo(); /* 构造函数1 */ 6 Demo(double a); /* 示例代码2 */ 7 Demo(int a,double b); /* 示例代码3 */ 8 Demo(int a,int b=10,double c=1.6); /* 示例代码4 */ 9 ~Demo();10 void Func(void);11 12 private:13 int value1;14 int value2;15 };上述四种构造函数:
构造函数1没有参数,无法进行类型转换!
构造函数2有一个参数,可以进行类型转换,如:Demo test; test = 12.2;这样的调用就相当于把12.2隐式转换为Demo类型。
构造函数3有两个参数,且无默认值,故无法使用类型转换!
构造函数4有3个参数,其中两个参数有默认值,故可以进行隐式转换,如:Demo test;test = 10; 。
下面讲述使用了关键字explicit的情况:
1 1 /* 示例代码2 */ 2 2 class Demo 3 3 { 4 4 public: 5 5 Demo(); /* 构造函数1 */ 6 6 explicit Demo(double a); /* 示例代码2 */ 7 7 Demo(int a,double b); /* 示例代码3 */ 8 8 9 9 ~Demo();10 10 void Func(void);11 11 12 12 private:13 13 int value1;14 14 int value2;15 15 };在上述构造函数2中,由于使用了explicit关键字,则无法进行隐式转换。即:Demo test;test = 12.2;是无效的!但是我们可以进行显示类型转换,如:
Demo test;
test = Demo(12.2); 或者
test = (Demo)12.2;
上述就是小编为大家分享的C++中explicit关键字如何使用了,如果刚好有类似的疑惑,不妨参照上述分析进行理解。如果想知道更多相关知识,欢迎关注行业资讯频道。
函数
类型
代码
参数
示例
关键
关键字
C++
两个
内容
情况
特性
分析
意外
专业
中小
内容丰富
只有
就是
情形
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
互联网科技网
科技互联网产品
圆梦互联网科技
互联网 科技公司
互联网科技金融公司
互联网科技革命
银优互联网科技有限公司
壕鑫互联网络科技
深圳天众互联网科技公司
丰台科技园 互联网公司
上海电发互联网科技有限公司
互联网科技公司需要的职位
中国互联网有什么科技含量
互联网对科技的发展
互联网保险科技创业
想开互联网科技公司怎么样
小米互联网科技园入驻
卡尔迅互联网科技有限公司
数字互联网科技有限公司
北京品多多互联网科技有限公司
美国互联网保险保险科技
互联网科技与金融科技
互联网科技美容
移动互联网年度科技创新
乌鲁木齐新华智原互联网科技学校
21世纪互联网科技成就
郑州欣桑互联网科技有限公司
互联网硬科技公司
长沙易易互联网科技有限公司
武汉亿视互联网科技有限公司