c++ explicit的作用

来源:百度知道 编辑:UC知道 时间:2024/07/08 00:28:55
C++里explicit的作用 用法 要注意的地方 还有例子 请达人详细说明 谢谢了

简单说就是用在构造函数前面 禁止隐式类型转换
比如class cls
{
explicit cls(int i)
{...}
};
另外有一个函数
void f(cls obj)
{
...
}
int i=0;
这时候调用f(i)就是错误的
没有explicit的话就可以用i隐式建立一个对象
这样做(显示调用构造函数)就是对的:cls obj(i);

This keyword is a declaration specifier that can only be applied to in-class constructor declarations. An explicit constructor cannot take part in implicit conversions. It can only be used to explicitly construct an object.
用于用户自定义类型的构造函数,指定它是默认的构造函数,不可用于转换构造函数.因为构造函数有三种:1拷贝构造函数2转换构造函数3一般的构造函数(我自己的术语^_^)
另:如果一个类或结构存在多个构造函数时,explicit 修饰的那个构造函数就是默认的