explicit和implicit

谁说胖子不能爱 提交于 2020-03-02 05:16:23

explicit是C++中的一个关键字,只用于修饰只有一个参数的构造函数:

class A{
    explicit A(const T obj); 
};

该关键字告诉编译器该类只能显式的转换,不能隐式(implicit)的赋值。下面介绍一下显式转换和隐式转换的区别:

1 A a=b;//隐式的调用构造函数
2 A a(b);//显式的调用构造函数

google的c++规范中提到explicit的优点是可以避免不合时宜的类型变换,缺点无。所以以后想项目中我决定只有单个传参的构造函数都用explicit修饰,以避免不必要的麻烦。

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!