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关键字相关推荐

  1. implicit 关键字

    用于声明隐式的用户定义类型转换运算符.它可以实现2个不同类的隐式转换 ,提高代码的可读性.但是需要注意使用隐式转换操作符之后,在编译时会跳过异常检查,所以隐式转换运算符应当从不引发异常并且从不丢失信息 ...

  2. C#中的Explicit和Implicit了解一下吧

    今天在研究公司项目框架的时候看到了下面的用法,public static implicit operator JsonData(int data);.貌似很久没用过这种隐式转换的写法了,因此重新温习一 ...

  3. 深入理解C++中的explicit关键字

    深入理解C++中的explicit关键字 kezunhai@gmail.com http://blog.csdn.net/kezunhai C++中的explicit关键字只能用于修饰只有一个参数的构 ...

  4. VC++工作笔记0003---C++中的explicit关键字

    技术交流QQ群[JAVA,C++,Python,.NET,BigData,AI]:170933152 个人理解: 这个的作用,其实就是,防止隐式转换,因为如果有隐式转换的话,那么用起来,感觉就怪怪的, ...

  5. c++中的explicit关键字

    2007-05-11 14:42:00 | 作者: Admin ] c++中的explicit关键字用来修饰类的构造函数,表明该构造函数是显式的,既然有"显式"那么必然就有&quo ...

  6. 【c++】【转】c++中的explicit关键字

    http://www.cnblogs.com/chio/archive/2007/09/17/895263.html c++中的explicit关键字用来修饰类的构造函数,表明该构造函数是显式(调用) ...

  7. C++中的explicit关键字用法

    c++中的explicit关键字用来修饰类的构造函数,被修饰的类的构造函数不能进行隐式类型的转换,既然有"显式"那么必然就有"隐式",那么什么是显示而什么又是隐 ...

  8. 【转】认识 C++ 中的 explicit 关键字

    C++ 中 explicit 关键字的作用 在C++中,explicit关键字用来修饰类的构造函数,被修饰的构造函数的类,不能发生相应的隐式类型转换,只能以显示的方式进行类型转换. explicit使 ...

  9. C++中的explicit

    explicit 前言 0x00 explicit 前言 C++中, 一个类的构造函数(或者除了第一个参数外其余参数都有默认值的多参构造函数), 承担了两个角色. 1.是个构造器 2.是个默认且隐含的 ...

  10. C++中的explicit详解

    C++ explicit关键字详解 首先, C++中的explicit关键字只能用于修饰只有一个参数的类构造函数, 它的作用是表明该构造函数是显示的, 而非隐式的, 跟它相对应的另一个关键字是impl ...

最新文章

  1. android源码下载方法 批量下载 基于windows os
  2. java日记(2)------定时任务quartz浅析
  3. 弹窗php整人_[整人小程序] 超级信息框(无限弹窗++)
  4. 剪了 20% 的刘海、120Hz 刷新率、1TB 存储,iPhone 13 来了!
  5. SpringMVC 使用注解时控制器传参
  6. Server系列18:如何通过组策略赋予domain user受限网络管理权限?
  7. 力扣-1508 子数组和排序后的区间和
  8. python扫描端口hack_一款集http端口扫描和目录批量扫描为一体的自动化工具
  9. linux 服务器 安装svn
  10. VM虚拟机下添加一个硬盘
  11. Recommended software
  12. VMware教程:设置 CentOS 7 共享文件夹
  13. (40)STM32——OV2640摄像头实验
  14. Tableau画条形图、直方图、折线图、饼图、环形图、箱线图
  15. android马达测试,技术科普丨马达测试知多少?
  16. python runtimewarning_训练神经网络,numpy出现runtime warning的解决思路
  17. 海航生态科技舆情大数据平台容器化改造
  18. SpringSecurity整合springBoot、redis——实现登录互踢
  19. (五十三) Android O wifi 状态机消息处理及状态切换流程分析-以WifiController为例
  20. HeadFirst:设计模式-观察者模式

热门文章

  1. 基于SpringBoot的后台管理系统(Encache配置、全局异常处理(重点))(四)
  2. Java笔记:Statement和PreparedStatement的区别
  3. Linux系统下常用的帮助man,whatis,info,help总结
  4. Javascript String对象
  5. 数据库接口实验--php实现--
  6. xmanager 远程连接REDHAT 4 桌面
  7. linux grep,egrep,正则表达式
  8. java的传值和传址问题
  9. 百度地图在vue中使用
  10. ScrollView中Spinner问题