C++中explicit关键字如何使用
发表于:2025-02-03 作者:千家信息网编辑
千家信息网最后更新 2025年02月03日,这期内容当中小编将会给大家带来有关C++中explicit关键字如何使用,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。在C++中,我们有时可以将构造函数用作自动类型
千家信息网最后更新 2025年02月03日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安全错误
数据库的锁怎样保障安全
软件开发需要什么职业规划
全国网络安全并不太平
服务器插上显卡
网络安全第一责任人的请示
软件开发部门有什么岗位
pop和smtp服务器地址查询
软件开发与设备芯片有关系吗
安宁哪有定制软件开发
sage数据库怎么下载题录
计算机网络技术和道路桥梁
软件开发中步骤中qa的作用
傻瓜式软件开发平台
海南做弱电还是软件开发
天河区软件开发技校
tcga数据库使用
共建网络安全防线图片
杭州crm软件开发价格
外国网络技术
初学者 数据库取数据表
深岩银河加载不出服务器
职务数据库
辽宁邮件营销外贸软件开发公司
网络安全 蜜罐
多肽功能分析数据库
大学生怎么学习网络安全
淄博诺达网络技术
兰亭序是哪个服务器的
金蝶kis软件开发商
吴中区知名服务器应用范围
宁波光讯网络技术有限公司