正文

回到頂部

1. 將需要隱式類型轉(zhuǎn)換的函數(shù)聲明為成員函數(shù)會(huì)出現(xiàn)問題

使類支持隱式轉(zhuǎn)換是一個(gè)壞的想法。當(dāng)然也有例外的情況,最常見的一個(gè)例子就是數(shù)值類型。舉個(gè)例子,如果你設(shè)計(jì)一個(gè)表示有理數(shù)的類,允許從整型到有理數(shù)的隱式轉(zhuǎn)換應(yīng)該是合理的。在C++內(nèi)建類型中,從int轉(zhuǎn)換到double也是再合理不過的了(比從double轉(zhuǎn)換到int更加合理)??聪旅娴睦樱?/p>

萬碼學(xué)堂,電腦培訓(xùn),計(jì)算機(jī)培訓(xùn),Java培訓(xùn),JavaEE開發(fā)培訓(xùn),青島軟件培訓(xùn),軟件工程師培訓(xùn)

 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 };

萬碼學(xué)堂,電腦培訓(xùn),計(jì)算機(jī)培訓(xùn),Java培訓(xùn),JavaEE開發(fā)培訓(xùn),青島軟件培訓(xùn),軟件工程師培訓(xùn)

 

你想支持有理數(shù)的算術(shù)運(yùn)算,比如加法,乘法等等,但是你不知道是通過成員函數(shù)還是非成員函數(shù),或者非成員友元函數(shù)來實(shí)現(xiàn)。你的直覺會(huì)告訴你當(dāng)你猶豫不決的時(shí)候,你應(yīng)該使用面向?qū)ο蟮奶匦?。有理?shù)的乘積和有理數(shù)類相關(guān),所有將有理