正文
1. 將需要隱式類型轉(zhuǎn)換的函數(shù)聲明為成員函數(shù)會出現(xiàn)問題
使類支持隱式轉(zhuǎn)換是一個壞的想法。當然也有例外的情況,最常見的一個例子就是數(shù)值類型。舉個例子,如果你設(shè)計一個表示有理數(shù)的類,允許從整型到有理數(shù)的隱式轉(zhuǎn)換應(yīng)該是合理的。在C++內(nèi)建類型中,從int轉(zhuǎn)換到double也是再合理不過的了(比從double轉(zhuǎn)換到int更加合理)。看下面的例子:
1 class Rational { 2 3 public: 4 5 Rational(int numerator = 0, // ctor is deliberately not explicit; 6 7 int denominator = 1); // allows implicit int-to-Rational 8 9 // conversions10 11 int numerator() const; // accessors for numerator and12 13 int denominator() const; // denominator — see Item 2214 15 private:16 17 ...18 19 };
你想支持有理數(shù)的算術(shù)運算,比如加法,乘法等等,但是你不知道是通過成員函數(shù)還是非成員函數(shù),或者非成員友元函數(shù)來實現(xiàn)。你的直覺會告訴你當你猶豫不決的時候,你應(yīng)該使用面向?qū)ο蟮奶匦?。有理?shù)的乘積和有理數(shù)類相關(guān),所有將有理