effective c++ 条款24 declare non member functions when type conversions should apply to all parameters

  文中这个例子好像不具一般性。

     有些时候会需要让class支持隐士类型转换(一般来说这不是个好主意)。 比如说有理数Rational 这个class,    

class Rational
{
  public:
   Rational(int real=0, int img=0)
   {
      this->real = real;
      this->img = img;
   }
   private:
     int real;
     int img;
};

我们希望这个类可以和int进行混合运算

Rational a(1,2);
Rational b = a *2;
Rational c = 2*a;

为了达到这样的目的,是不能把*声明称成员函数的。

要把它声明成一个non member函数

const Rational operator*(const Rational &lhs, const Rational &rhs)
{
    return Rational(lhs.getReal() * rhs.getReal(), lhs.getImg * rhs.getImg()); // math logic may not be right just illustrate the problem
}

 

 

posted @ 2014-07-11 02:56  williamwood  阅读(116)  评论(0编辑  收藏  举报