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)