一、试验目的
1.掌握C++语言多态的基本概念
2.掌握运算符重载函数的声明和定义方法
二、试验内容
编写一个程序,实现两个复数的乘法
1.首先建立一个乘法的类,在其中定义实部和虚部,并添加构造函数
class Multiply
{
public:
double real, imag;
Multiply(double r = 0, double i = 0)
{
real = r;
imag = i;
}
};
2.自定义运算符“*”作为复数运算的乘法运算符
复数的乘法是复数1的实部与复数2的实部,虚部分别相乘再加上复数1的虚部与复数2的实部与虚部分别相乘。
Multiply operator*(Multiply m1, Multiply m2)
{
Multiply t;
t.real = (m1.real * m2.real) + (m1.imag * m2.imag);
t.imag = (m1.real * m2.imag) + (m1.imag * m2.real);
return t;
}
3.最后再写出主函数,主函数中使用复数相乘运算可以有两种表示方法
分别如下
int main()
{
Multiply m1(1.1, -1.2), m2(2.1, -2.2), ans1, ans2;
ans1 = operator*(m1, m2);
cout << "real1=" << ans1.real << " " << "imag1=" << ans1.imag << endl;
ans2 = m1 * m2;
cout << "real2=" << ans2.real << " " << "imag2=" << ans2.imag << endl;
return 0;
}
两种表示形式均可使用
完整的代码如下
#include<iostream>
using namespace std;
class Multiply
{
public:
double real, imag;
Multiply(double r = 0, double i = 0)
{
real = r;
imag = i;
}
};
Multiply operator*(Multiply m1, Multiply m2)
{
Multiply t;
t.real = (m1.real * m2.real) + (m1.imag * m2.imag);
t.imag = (m1.real * m2.imag) + (m1.imag * m2.real);
return t;
}
int main()
{
Multiply m1(1.1, -1.2), m2(2.1, -2.2), ans1, ans2;
ans1 = operator*(m1, m2);
cout << "real1=" << ans1.real << " " << "imag1=" << ans1.imag << endl;
ans2 = m1 * m2;
cout << "real2=" << ans2.real << " " << "imag2=" << ans2.imag << endl;
return 0;
}
运行结果如下图所示