In this Text:
"If you define a constructor with a single parameter, the compiler will use this constructor for implicit conversions, which may not be what you want. For example, suppose you define a constructor
for the CBox class like this:
CBox(double side): m_Length(side), m_Width(side), m_Height(side) {}
This is a handy constructor to have when you want to define a CBox object that is a cube, where all the dimensions are the same. Because this constructor has a single parameter, the compiler will use it for implicit conversions when necessary. For example, consider the following code fragment:
The first statement calls the default constructor to create box, so this must be present in the class. The second statement will call the constructor CBox(double) with the argument as 99.0, so you are getting an implicit conversion from a value of type double to type CBox. This may be what you want, but there will be many classes with single argument constructors where you don’t want this to happen.
In these situations, you can use the explicit keyword in the definition of the constructor to prevent it:
explicit CBox(double side): m_Length(side), m_Width(side), m_Height(side) {}
"
In this Paragraph of the text:
"The first statement calls the default constructor to create box, so this must be present in the class. The second statement will call the constructor CBox(double) with the argument as 99.0, so you are getting an implicit conversion from a value of type double to type CBox. This may be what you want, but there will be many classes with single argument constructors where you don't want this to happen."
How is the argument implicitly converted to type CBox??? Can anyone explain please? Thanks!