题目
编写一个包含双精度的Number类,并为+、–、*、/和=添加重载运算符。选择这些函数的返回值,以便表达式可以链接在一起,并提高效率。编写一个自动类型转换运算符intdouble()。
代码
#include<iostream>
using namespace std;
class Number
{
public:
Number(double X){x=X;}
Number& operator = (const Number& B){this->x = B.x;return *this;} //重载运算符 =
friend Number operator + (const Number& A,const Number& B); //重载运算符 +
friend Number operator - (const Number& A,const Number& B); //重载运算符 -
friend Number operator * (const Number& A,const Number& B); //重载运算符 *
friend Number operator / (const Number& A,const Number& B); //重载运算符 /
void intdouble (){int t = x;cout <<t<<endl;} //类型转换函数
void show () {cout << x << endl;}
private:
double x;
};
Number operator + (const Number& A,const Number& B)
{
double y = A.x + B.x;
Number C(y);
return C;
}
Number operator - (const Number& A,const Number& B)
{
double y = A.x - B.x;
Number C(y);
return C;
}
Number operator * (const Number& A,const Number& B)
{
double y = A.x * B.x;
Number C(y);
return C;
}
Number operator / (const Number& A,const Number& B)
{
double y = A.x / B.x;
Number C(y);
return C;
}
int main()
{
Number A(4.2),B(2.3);
cout << "A.x = " ; A.show() ; cout <<"B.x = "; B.show() ;
Number C = A + B;
cout <<"重载运算符 +:";C.show();
Number D = A - B;
cout <<"重载运算符 -:";D.show();
Number E = A * B;
cout <<"重载运算符 *:";E.show();
Number F = A / B;
cout <<"重载运算符 /:";F.show();
Number G = A ;
cout <<"重载运算符 =:";G.show();
cout <<"类型转化函数:A.x = "; A.intdouble();
return 0;
}