正文
1. 問題的提出:要求函數(shù)返回對象時,可以返回引用么?
一旦程序員理解了按值傳遞有可能存在效率問題之后(Item 20),許多人都成了十字軍戰(zhàn)士,決心清除所有隱藏的按值傳遞所引起的開銷。對純凈的按引用傳遞(不需要額外的構(gòu)造或者析構(gòu))的追求絲毫沒有懈怠,但他們的始終如一會產(chǎn)生致命的錯誤:它們開始傳遞指向并不存在的對象的引用。這可不是好事情。
考慮表示有理數(shù)的一個類,它包含將兩個有理數(shù)相乘的函數(shù)(Item 3):
1 class Rational { 2 3 public: 4 5 Rational(int numerator = 0, // see Item 24 for why this 6 7 int denominator = 1); // ctor isn’t declared explicit 8 9 ...10 11 private:12 13 int n, d; // numerator and denominator14 15 friend16 17 const Rational // see Item 3 for why the18 19 operator*(const Rational& lhs, // return type is const20 21 const Rational& rhs);22 23 };