原题目信息
写一个包含一个double成员的Number类,并增添重载的operator +, -, *, /
和赋值符。为这些函数合理地选择返回值以便可以链式写表达式,以提高效率。写一个自动类型转换operator double()
解答
#include <iostream>
using namespace std;
class Number
{
public:
double num;
Number(double num_)
{
num = num_;
}
Number &operator=(const double num_)
{//重载等于号
num = num_;
return *this;
}
operator double() const
{//自动类型转换,可以将此类转换为double类型
return num;
}
};
Number operator+(const Number &na, const Number &nb)
{
return Number(na.num + nb.num);
}
Number operator-(const Number &na, const Number &nb)
{
return Number(na.num - nb.num);
}
Number operator*(const Number &na, const Number &nb)
{
return Number(na.num * nb.num);
}
Number operator/(const Number &na, const Number &nb)
{
return Number(na.num / nb.num);
}
int main()
{
Number a(2.4), b(1.2), c(a);
cout << a + b << endl << a / b << endl;
cout << a + b - a * c + a / b << endl;
double aa = a;
cout << aa << endl;
cout << (double) b << endl;
return 0;
}