C++中explicit关键字如何使用
发表于:2025-12-02 作者:千家信息网编辑
千家信息网最后更新 2025年12月02日,这期内容当中小编将会给大家带来有关C++中explicit关键字如何使用,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。在C++中,我们有时可以将构造函数用作自动类型
千家信息网最后更新 2025年12月02日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安全错误
数据库的锁怎样保障安全
数据库实现自动化
核心数据库管理员
网络安全分析师职责
数据库怎么存储语音
单车软件开发
数据库时间相减
php提交表单至数据库
杨浦区咨询软件开发销售方法
下半年网络安全工作计划
中学生网络安全 博客
火绒服务器联动更新安装包
sql找不到服务器
新年主题软件开发
单机版查询软件开发
中国网络安全做得最好的公司
一台电脑搭建MQTT服务器
网络技术员笔试题目
万方数据库与cnki区别
江门自主可控软件开发平均价格
软件开发公司市场低价
网络安全电影作文
网络安全信息服务合同
小迪的网络安全培训视频资源
服务器返回代码403
《护苗网络安全》观后感
上海交大网络安全与推免
数据库技术百度百科
徐州文件存储服务器
专利数据库是公开的吗
小米宏观经济数据库