复数类定义及运算符重载
时间: 2023-06-23 14:55:11 浏览: 116
复数类是一种表示复数的数据类型,由实部和虚部组成。在C++中,我们可以定义复数类,并重载运算符,实现复数的基本运算。
下面是一个简单的复数类定义及运算符重载的示例:
```cpp
class Complex {
private:
double real;
double imag;
public:
Complex(double r = 0.0, double i = 0.0) : real(r), imag(i) {}
Complex operator+(const Complex& c) {
return Complex(real + c.real, imag + c.imag);
}
Complex operator-(const Complex& c) {
return Complex(real - c.real, imag - c.imag);
}
Complex operator*(const Complex& c) {
return Complex(real * c.real - imag * c.imag, real * c.imag + imag * c.real);
}
Complex operator/(const Complex& c) {
double denominator = c.real * c.real + c.imag * c.imag;
return Complex((real * c.real + imag * c.imag) / denominator, (imag * c.real - real * c.imag) / denominator);
}
friend std::ostream& operator<<(std::ostream& os, const Complex& c) {
os << c.real << "+" << c.imag << "i";
return os;
}
};
```
这个示例中,我们定义了一个`Complex`类,包含实部和虚部两个私有成员变量。我们通过构造函数来初始化这两个成员变量。
接着,我们重载了加、减、乘、除等运算符,实现了复数的基本运算。我们还通过`friend`关键字定义了一个友元函数`operator<<`,用于输出复数对象。
使用这个复数类,我们可以进行如下的运算:
```cpp
Complex a(2.0, 3.0);
Complex b(4.0, -1.0);
Complex c = a + b;
Complex d = a - b;
Complex e = a * b;
Complex f = a / b;
std::cout << "a = " << a << std::endl;
std::cout << "b = " << b << std::endl;
std::cout << "a + b = " << c << std::endl;
std::cout << "a - b = " << d << std::endl;
std::cout << "a * b = " << e << std::endl;
std::cout << "a / b = " << f << std::endl;
```
输出结果如下:
```
a = 2+3i
b = 4-1i
a + b = 6+2i
a - b = -2+4i
a * b = 11+10i
a / b = 0.4+0.7i
```
这个示例只是一个简单的复数类定义及运算符重载的示例,实际上,我们还可以定义更多的运算符,比如逻辑运算符、比较运算符等,以实现更多的功能。
阅读全文
相关推荐














