您的位置:首页 > 其它

读书笔记--抑制构造函数定义隐式转换

2007-03-20 23:07 260 查看
可以通过将构造函数声明为explicit,来防止在需要隐式转换的上下文中使用构造函数。explicit关键字只能用于类的内部构造函数声明上,在类的定义体外不再重复
class Sales_item
{
public:
Sales_item(const string &book=""):isbn(book),units.sold(0),revenue(0.0){}
};

string null_book="9-19";
item same_isbn(null_book);

这段程序使用一个string类型对象作为实参传给Sales_item的same_isbn函数。编译器使用接受一个string的Sales_item被传递给Sales_isbn.
使用explicit后,构造函数不能用于隐式创建对象
item.same_isbn(null_book); //error:string constructor is explicit
使用显示的构造函数:
string null_book="9-19";
item.same_isbn(Sales_item(null_book));    //ok
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐