一旦程序员抓住对象传值的效率隐忧,很多人就会成为狂热的圣战分子,誓要根除传值的罪恶,无论它隐藏多深。他们不屈不挠地追求传引用的纯度,但他们全都犯了一个致命的错误:他们开始传递并不存在的对象的引用。这可不是什么好事。
考虑一个代表有理数的类,包含一个将两个有理数相乘的函数:
class Rational {
public:
Rational(int numerator = 0, // see Item 24 for why this
int denominator = 1); // ctor isn’t declared eXPlicit
...
private:
int n, d; // numerator and denominator
friend:
const Rational // see Item 3 for why the
operator*(const Rational& lhs, // return type is const
const Rati...[ 查看全文 ]