读书笔记:Effective C++ 2.0 版,条款31(注意对象的生命周期)、条款32(推迟变量定义)

条款31: 千万不要返回局部对象的引用,也不要返回函数内部用new初始化的指针的引用

inline const rational& operator*(const rational& lhs, const rational& rhs){
  rational result(lhs.n * rhs.n, lhs.d * rhs.d);
  return result; //result对象在函数返回后就失效了
}
inline const rational& operator*(const rational& lhs, const rational& rhs){
  rational *result = new rational(lhs.n * rhs.n, lhs.d * rhs.d);
  return *result; //内存管理不合适
}

条款32: 尽可能地推迟变量的定义
原因是避免不必要的构造、析构。

你可能感兴趣的:(cpp,c++)