一、 复数的运算
1、算法详解【在注释中】
#include <iostream>
using namespace std;
class Complex
{
public:
Complex(){real=0; imag=0;} //定义构造函数,对私有数据成员初始化为0
Complex(double r, double i){real=r; imag=i;} //构造函数的重载,两个double类型的构造函数
Complex complex_add(Complex &c2); //声明复数相加函数,类型为Complex类,引用对象c2
void display(); //声明普通成员函数
private:
double real; //定义私有成员数据
double imag;
};
//定义复数相加函数,返回值类型为Complex自定义类,参数为引用Complex类型的对象c2
Complex Complex::complex_add(Complex &c2)
{
Complex c; //定义自定义Complex类型的对象c(实例化对象)
//实部与虚部分别相加
c.real= real + c2.real; //将初始化数据real加上传入的引用对象real数据,赋值给局部Complex对象(变量)的real值中
c.imag= imag + c2.imag;
return c; //返回局部对象c
}
//定义显示函数
void Complex::display()
{
cout << "(" << real << "," << imag << "i)" << endl;
}
int main()
{
//实例化3个对象,分别给构造函数传入参数,c3对象不传入参数
Complex c1(3,4), c2(5,-10), c3;
c3= c1.complex_add(c2); //调用对象c1复数相加函数,传入对象c2,进行运算。返回给空对象c3
cout << "c1="; c1.display(); //调用c1的成员函数display,输出c1的值
cout << "c2="; c2.display(); //调用c2的成员函数display,输出c2的值
cout << "c3="; c3.display(); //调用c3的成员函数display,输出c3的值
return 0;
}
2、执行结果
二、利用重载运算符+来实现复数的加法运算
1、算法详解【注释中】
#include <iostream>
using namespace std;
//对运算符 + 进行重载,使其能够加上复数
class Complex
{
public:
Complex(){real=0; imag=0;} //定义构造函数,对私有数据成员初始化为0
Complex(double r, double i){real=r; imag=i;} //构造函数的重载,两个double类型的构造函数
Complex operator + (Complex &c2); //声明重载运算符+的函数,类型为Complex,参数为对象c2
void display(); //声明普通成员函数
private:
double real; //定义私有成员数据
double imag;
};
//定义载运算符+的函数,类型为Complex,参数为引用Complex类型的对象c2
Complex Complex::operator +(Complex &c2)
{
Complex c; //定义自定义Complex类型的对象c(实例化对象)
//实部与虚部分别相加
c.real= real + c2.real; //将初始化数据real加上传入的引用对象real数据,赋值给局部Complex对象(变量)的real值中
c.imag= imag + c2.imag;
return c; //返回局部对象c
}
//定义显示函数
void Complex::display()
{
cout << "(" << real << "," << imag << "i)" << endl;
}
int main()
{
//实例化3个对象,分别给构造函数传入参数,c3对象不传入参数
Complex c1(3,4), c2(5,-10), c3;
c3= c1 + c2; //运算符+重载完成后,就可以直接使用了,使用时其实就是调用Complex类的operator+函数
//相当于
//c1.operator +(c2);
cout << "c1="; c1.display(); //调用c1的成员函数display,输出c1的值
cout << "c2="; c2.display(); //调用c2的成员函数display,输出c2的值
cout << "c3="; c3.display(); //调用c3的成员函数display,输出c3的值
return 0;
}
2、执行结果