c++重载复数的加法和减法运算符的功能,实现两个复数的加法,一个复数与一个实数的加法;两个复数的减法,一个复数与一个实数的减法。用成员函数实现加法运算符的重载,用友元函数实现减法运算符的重载。
时间: 2024-02-12 08:05:35 浏览: 106
C++ 重载运算符和重载函数
5星 · 资源好评率100%
好的,我来为您解答。下面是具体的实现过程:
```c++
#include <iostream>
using namespace std;
//定义复数类
class Complex{
public:
Complex(double r=0, double i=0): real(r), imag(i){} //构造函数
Complex operator+(const Complex& c); //重载加法运算符
Complex operator+(const double& r); //重载实数加法运算符
friend Complex operator-(const Complex& c1, const Complex& c2); //友元函数重载减法运算符
friend Complex operator-(const Complex& c, const double& r); //友元函数重载实数减法运算符
void display(); //输出函数
private:
double real; //实部
double imag; //虚部
};
//成员函数重载加法运算符
Complex Complex::operator+(const Complex& c){
return Complex(this->real+c.real, this->imag+c.imag);
}
//成员函数重载实数加法运算符
Complex Complex::operator+(const double& r){
return Complex(this->real+r, this->imag);
}
//友元函数重载减法运算符
Complex operator-(const Complex& c1, const Complex& c2){
return Complex(c1.real-c2.real, c1.imag-c2.imag);
}
//友元函数重载实数减法运算符
Complex operator-(const Complex& c, const double& r){
return Complex(c.real-r, c.imag);
}
//输出函数
void Complex::display(){
cout << this->real << "+" << this->imag << "i" << endl;
}
int main(){
Complex c1(1, 2);
Complex c2(3, 4);
Complex c3 = c1 + c2;
c3.display(); //输出:4+6i
Complex c4 = c1 + 5;
c4.display(); //输出:6+2i
Complex c5 = c2 - c1;
c5.display(); //输出:2+2i
Complex c6 = c2 - 2;
c6.display(); //输出:1+4i
return 0;
}
```
在上面的代码中,我们首先定义了复数类 Complex,其中包含了实部和虚部,以及构造函数、成员函数重载加法运算符、成员函数重载实数加法运算符、友元函数重载减法运算符、友元函数重载实数减法运算符和输出函数。
成员函数重载加法运算符和成员函数重载实数加法运算符都是成员函数,重载的是加法运算符,前者参数为一个复数,后者参数为一个实数,都是返回一个 Complex 类型的值,表示两个复数(或一个复数和一个实数)相加的结果。
友元函数重载减法运算符和友元函数重载实数减法运算符都是友元函数,重载的是减法运算符,前者参数为两个复数,后者参数为一个复数和一个实数,都是返回一个 Complex 类型的值,表示两个复数(或一个复数和一个实数)相减的结果。
最后在主函数中演示了使用这些运算符的例子,输出了相应的结果。
希望我的回答对您有所帮助!
阅读全文