欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

C++中explicit关键字的作用

程序员文章站 2022-03-19 20:56:59
C++中explicit关键字的作用 在C++中,explicit关键字用来修饰类的构造函数,被修饰的构造函数的类,不能发生相应的隐式类型转换,只能以显示的方式进行类型转换。...

C++中explicit关键字的作用

在C++中,explicit关键字用来修饰类的构造函数,被修饰的构造函数的类,不能发生相应的隐式类型转换,只能以显示的方式进行类型转换。explicit 关键字只能用于类内部的构造函数声明上作用于单个参数的构造函数;,explicit关键字用来修饰类的构造函数,被修饰的构造函数的类,不能发生相应的隐式类型转换。

class Things

{

public:

Things(const std::string&name =""):

m_name(name),height(0),weight(10){}

int CompareTo(const Things & other);

std::string m_name;

int height;

int weight;

};

这段代码中things的构造函数可以只用一个实参完成初始化,故可以进行一个隐式转换,

things a;

................//在这里被初始化并使用。

std::string nm ="book_1";

//由于可以隐式转换,所以可以下面这样使用

int result = a.CompareTo(nm);

这段程序使用一个string类型对象作为实参传给things的CompareTo函数。这个函数本来是需要一个tings对象作为实参。现在编译器使用string nm来构造并初始化一个

things对象,新生成的临时的things对象被传递给CompareTo函数,并在离开这段函数后被析构。