隐式类类型转换,是指一个普通类型隐式转换为类。例如


class Sales_item

{

public :

Sales_item(const string &book=""):isbn(book),units_sold(0),revenue(0.0){};//定义了一个隐式转换,可以使string类型转化为Sales_item类型

Sales_item(istream& is);//定义了一个隐式转换,可以使istream类型转化为Sales_item

private:

string isbn;

int units_sold;

double revenue;
}

string null_book="9-999-999-99";
item.same_isbn; //null_book 转换为一个Sales_item 类型。
或者
item.same_isbn(cin);从cin转换为Sales_item对象。

explicit 可以把构造函数声明为explicit,来防止在需要隐式转换的上下文中使用构造函数。
explicit 关键字只能用于类内部的构造函数声明上,在类的定义体外部所做的定义上不在重复它。
任何构造函数都可以用来显式地创建临时对象。
通常,除非有明显的理由想要定义隐式转换,否则单形参构造函数应该为explicit,
(null_book)