面向对象程序设计上机练习十二(运算符重载)
Time Limit: 1000ms Memory limit: 65536K 有疑问?点这里^_^
题目描述
处理一个复数与一个double数相加的运算,结果存放在一个double型变量d1中,输出d1的值。定义Complex(复数)类,在成员函数中包含重载类型转换运算符:operator double(){return real;}
输入
输入占两行:
第1行是一个复数的实部和虚部,数据以空格分开。
第2行是一个实数。
第1行是一个复数的实部和虚部,数据以空格分开。
第2行是一个实数。
输出
输出占一行,复数的实部和实数之和,小数点后保留1位。
示例输入
2.3 5.4 3.4
示例输出
5.7
#include <iostream>
using namespace std;
class Complex
{
private:
double real;
double image;
public:
void display()
{
cin>>real>>image;
}
void show()
{
cout<<real<<endl;
}
friend Complex operator +(Complex k,double f);//友元函数的函数重载
};
Complex operator +(Complex k,double f)
{
Complex c;
c.real=k.real+f;
c.image=k.image;
return c;
}
int main()
{
Complex a,c;
a.display();
double b,d;
cin>>b;
c=a+b;
c.show();
return 0;
}
方法二:
#include<iostream>
#include<cstdio>
using namespace std;
class T
{
private:
double real;
double image;
public:
T()
{
real=0;
image=0;
}
T(double r)
{
real=r;
image=0;
}
T (double r,double i)
{
real=r;
image=i;
}
void disp()
{
printf("%.1lf",real);
}
operator double()
{
return real;
}
};
int main()
{
double a,b,c,d1;
cin>>a>>b>>c;
T c1(a,b),c2;
d1=c+c1;
c2=T(d1);
c2.disp();
return 0;
}
#include<iostream>
#include<cstdio>
using namespace std;
class T
{
private:
double real;
double image;
public:
T()
{
real=0;
image=0;
}
T(double r)
{
real=r;
image=0;
}
T (double r,double i)
{
real=r;
image=i;
}
void disp()
{
printf("%.1lf",real);
}
operator double()
{
return real;
}
};
int main()
{
double a,b,c,d1;
cin>>a>>b>>c;
T c1(a,b),c2;
d1=c+c1;
c2=T(d1);
c2.disp();
return 0;
}