我談到讓一個類支持隱式類型轉換通常是一個不好的主意。當然,這條規則有一些例外,最普通的一種就是在創建數值類型時。例如,假如你設計一個用來表現有理數的類,答應從整數到有理數的隱式轉換看上去并非不合理。 這的確不比 C++ 的內建類型從 int 到 double 的轉換更不合理(而且比 C++ 的內建類型從 double 到 int 的轉換合理得多)。在這種情況下,你可以用這種方法開始你的 Rational 類:
class Rational {
public:
Rational(int numerator = 0, // ctor is deliberately not eXPlicit;
int denominator = 1); // allows implicit int-to-Rational
// conversions
int numerator() const; // accessors for numerator and
int denominator() const; // denominator - see Item 22