C++中的explicit、implicit关键字
C++中的explicit关键字只能用于修饰只有一个参数的类构造函数, 它的作用是表明该构造函数是显示的, 而非隐式的, 跟它相对应的另一个关键字是implicit, 意思是隐藏的,类构造函数默认情况下即声明为implicit(隐式).
explicit关键字修饰的类构造函数,不能进行自动地隐式类型转换(即不能直接使用赋值操作符号“=”),只能显式地进行类型转换(如(类型)变量)。
所以explicit关键字的作用就是防止类构造函数的隐式自动转换.
如果构造函数没有关键字explicit,默认为隐式声明
class CxString // 使用关键字explicit的类声明, 显示转换
{
public:
char *_pstr;
int _size;
explicit CxString(int size)
{
_size = size;
// 代码同上, 省略...
}
CxString(const char *p)
{
// 代码同上, 省略...
}
};
// 下面是调用:
CxString string1(24); // 这样是OK的
CxString string2 = 10; // 这样是不行的, 因为explicit关键字取消了隐式转换
另外:
1.如果类构造函数参数大于或等于两个时, 是不会产生隐式转换的。
2.也有一个例外, 就是当除了第一个参数以外的其他参数都有默认值的时候, explicit关键字依然有效, 此时, 当调用构造函数时只传入一个参数, 等效于只有一个参数的类构造函数,
C++中的explicit、implicit关键字相关推荐
- implicit 关键字
用于声明隐式的用户定义类型转换运算符.它可以实现2个不同类的隐式转换 ,提高代码的可读性.但是需要注意使用隐式转换操作符之后,在编译时会跳过异常检查,所以隐式转换运算符应当从不引发异常并且从不丢失信息 ...
- C#中的Explicit和Implicit了解一下吧
今天在研究公司项目框架的时候看到了下面的用法,public static implicit operator JsonData(int data);.貌似很久没用过这种隐式转换的写法了,因此重新温习一 ...
- 深入理解C++中的explicit关键字
深入理解C++中的explicit关键字 kezunhai@gmail.com http://blog.csdn.net/kezunhai C++中的explicit关键字只能用于修饰只有一个参数的构 ...
- VC++工作笔记0003---C++中的explicit关键字
技术交流QQ群[JAVA,C++,Python,.NET,BigData,AI]:170933152 个人理解: 这个的作用,其实就是,防止隐式转换,因为如果有隐式转换的话,那么用起来,感觉就怪怪的, ...
- 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关键字用来修饰类的构造函数,被修饰的类的构造函数不能进行隐式类型的转换,既然有"显式"那么必然就有"隐式",那么什么是显示而什么又是隐 ...
- 【转】认识 C++ 中的 explicit 关键字
C++ 中 explicit 关键字的作用 在C++中,explicit关键字用来修饰类的构造函数,被修饰的构造函数的类,不能发生相应的隐式类型转换,只能以显示的方式进行类型转换. explicit使 ...
- C++中的explicit
explicit 前言 0x00 explicit 前言 C++中, 一个类的构造函数(或者除了第一个参数外其余参数都有默认值的多参构造函数), 承担了两个角色. 1.是个构造器 2.是个默认且隐含的 ...
- C++中的explicit详解
C++ explicit关键字详解 首先, C++中的explicit关键字只能用于修饰只有一个参数的类构造函数, 它的作用是表明该构造函数是显示的, 而非隐式的, 跟它相对应的另一个关键字是impl ...
最新文章
- android源码下载方法 批量下载 基于windows os
- java日记(2)------定时任务quartz浅析
- 弹窗php整人_[整人小程序] 超级信息框(无限弹窗++)
- 剪了 20% 的刘海、120Hz 刷新率、1TB 存储,iPhone 13 来了!
- SpringMVC 使用注解时控制器传参
- Server系列18:如何通过组策略赋予domain user受限网络管理权限?
- 力扣-1508 子数组和排序后的区间和
- python扫描端口hack_一款集http端口扫描和目录批量扫描为一体的自动化工具
- linux 服务器 安装svn
- VM虚拟机下添加一个硬盘
- Recommended software
- VMware教程:设置 CentOS 7 共享文件夹
- (40)STM32——OV2640摄像头实验
- Tableau画条形图、直方图、折线图、饼图、环形图、箱线图
- android马达测试,技术科普丨马达测试知多少?
- python runtimewarning_训练神经网络,numpy出现runtime warning的解决思路
- 海航生态科技舆情大数据平台容器化改造
- SpringSecurity整合springBoot、redis——实现登录互踢
- (五十三) Android O wifi 状态机消息处理及状态切换流程分析-以WifiController为例
- HeadFirst:设计模式-观察者模式