14.14 — Converting constructors, explicit, and delete
By default, C++ will treat any constructor as an implicit conversion operator. Consider the following case: #include <cassert> #include <iostream> class Fraction { private: int m_numerator; int m_denominator; public: // Default constructor Fraction(int numerator = 0, int denominator = 1) : m_numerator(numerator), m_denominator(denominator) { assert(denominator != 0); } // Copy …