Using explicit constructors and conversion operators to avoid implicit conversion
Before C++11, a constructor with a single parameter was considered a converting constructor (because it takes a value of another type and creates a new instance of the type out of it). With C++11, every constructor without the explicit
specifier is considered a converting constructor. Such a constructor defines an implicit conversion from the type or types of its arguments to the type of the class. Classes can also define converting operators that convert the type of the class to another specified type. All of these are useful in some cases but can create problems in other cases. In this recipe, we will learn how to use explicit constructors and conversion operators.
Getting ready
For this recipe, you need to be familiar with converting constructors and converting operators. In this recipe, you will learn how to write explicit constructors and conversion operators to avoid implicit conversions...