现代C++编程实战:132个核心技巧示例(原书第2版)
上QQ阅读APP看本书,新人免费读10天
设备和账号都新为新人

1.10 使用explicit构造函数和转换操作符来避免隐式转换

在C++11之前,具有单个形参的构造函数被视为转换构造函数(因为它接受另一种类型的值并由此创建该类型的新实例)。在C++11中,没有explicit说明符的构造函数都被视为转换构造函数,这样的构造函数定义了从参数的类型到类的类型的隐式转换。类还可以定义转换操作符,将类的类型转换为另一种指定的类型。所有这些在某些情况下都是有用的,但偶尔也会产生问题。在本节中,我们将学习如何使用explicit构造函数和转换操作符。