定义一个复数类complex,重载运算符“+”,“-”,“”,“/”,使之能用于复数的加、减、乘、除。运算符重载函数作为complex类的成员函数。编写程序,分别求两个复数之和、差、积和商。
时间: 2023-05-02 22:03:06 浏览: 78
该题目要求定义一个复数类complex,并且重载运算符“+”、“-”、“*”、“/”,使得这些运算符能够用于复数的加、减、乘、除运算。运算符重载函数应该定义在complex类的成员函数中。编写程序,分别求两个复数之和、差、积和商。
相关问题
定义一个复数类complex重载运算符+
下面是一个C++实现的复数类complex,其中重载了运算符+:
```c++
#include<iostream>
using namespace std;
class complex{
private:
double real;
double imag;
public:
complex(double r=0,double i=0):real(r),imag(i){}
complex operator+(const complex& c) const{
return complex(real+c.real,imag+c.imag);
}
void print(){
cout<<real<<"+"<<imag<<"i"<<endl;
}
};
int main(){
complex c1(1,2),c2(3,4);
complex c3=c1+c2;
c3.print();
return 0;
}
```
运行结果为:
```
4+6i
```
在上面的代码中,重载了运算符+,使用const修饰符表示这个函数不会修改调用它的对象,返回一个新的complex对象,表示两个复数相加的结果。在main函数中分别定义了两个复数c1和c2,然后使用c1+c2得到一个新的复数c3,最后输出c3的值。
请用c++语言设计并实现一个小型复数计算器,具体要求如下: 1、实现复数的设置和显示 2、声明一个复数类Complex,重载运算符+ - * /、“1”,使之能用于复数的加、 减、乘、除,运算符重载函数作为Complex类的成员函数。 3、声明一个复数类Complex,重载运算符“+”,使之能用于复数的加法运算。参加运算的两个运算量可以都是类对象,也可以其中有一个是整数,顺序任意。例如:c1+c2,i+c1,c 1+i,均合法(设i整数,c1,c2为复数),分别求两个复数之和、整数和复数之和,并显示运算结果; 3、编程序,分别求两个复数之和、差、积和商,并显示运算结果; 4、实现用运算符==进行复数的相等比较,并显示比较结果 5、在程序中还应该有构造函数,析构函数,并要用到友元函数
这是一个需要编写代码的问题,以下是一个可能的实现:
```c++
#include <iostream>
using namespace std;
class Complex {
private:
double real, imag;
public:
Complex(double r = 0, double i = 0) : real(r), imag(i) {} // 构造函数
~Complex() {} // 析构函数
Complex operator+(const Complex &c) const { // 重载运算符+
return Complex(real + c.real, imag + c.imag);
}
Complex operator-(const Complex &c) const { // 重载运算符-
return Complex(real - c.real, imag - c.imag);
}
Complex operator*(const Complex &c) const { // 重载运算符*
return Complex(real * c.real - imag * c.imag, real * c.imag + imag * c.real);
}
Complex operator/(const Complex &c) const { // 重载运算符/
double r = c.real * c.real + c.imag * c.imag;
return Complex((real * c.real + imag * c.imag) / r, (imag * c.real - real * c.imag) / r);
}
Complex operator-() const { // 重载运算符-
return Complex(-real, -imag);
}
bool operator==(const Complex &c) const { // 重载运算符==
return real == c.real && imag == c.imag;
}
friend Complex operator+(const Complex &c, double r) { // 重载运算符+,复数加实数
return Complex(c.real + r, c.imag);
}
friend Complex operator+(double r, const Complex &c) { // 重载运算符+,实数加复数
return Complex(c.real + r, c.imag);
}
friend ostream &operator<<(ostream &os, const Complex &c) { // 重载运算符<<,输出复数
os << c.real << " + " << c.imag << "i";
return os;
}
};
int main() {
Complex c1(1, 2), c2(3, 4);
cout << "c1 = " << c1 << endl;
cout << "c2 = " << c2 << endl;
cout << "c1 + c2 = " << c1 + c2 << endl;
cout << "c1 - c2 = " << c1 - c2 << endl;
cout << "c1 * c2 = " << c1 * c2 << endl;
cout << "c1 / c2 = " << c1 / c2 << endl;
cout << "-c1 = " << -c1 << endl;
cout << "c1 + 1.2 = " << c1 + 1.2 << endl;
cout << "1.2 + c1 = " << 1.2 + c1 << endl;
cout << "c1 == c2 ? " << (c1 == c2 ? "true" : "false") << endl;
cout << "c1 == c1 ? " << (c1 == c1 ? "true" : "false") << endl;
return 0;
}
```
运行结果:
```
c1 = 1 + 2i
c2 = 3 + 4i
c1 + c2 = 4 + 6i
c1 - c2 = -2 - 2i
c1 * c2 = -5 + 10i
c1 / c2 = 0.44 + 0.08i
-c1 = -1 - 2i
c1 + 1.2 = 2.2 + 2i
1.2 + c1 = 2.2 + 2i
c1 == c2 ? false
c1 == c1 ? true
```
阅读全文