#include <iostream>
class Complex {
private:
double real;
double imag;
public:
Complex(double r = 0, double i = 0) : real(r), imag(i) {}
// 友元函数声明
friend Complex operator-(const Complex& a, const Complex& b);
friend std::ostream& operator<<(std::ostream& os, const Complex& c);
};
// 减法运算符重载
Complex operator-(const Complex& a, const Complex& b) {
return Complex(a.real - b.real, a.imag - b.imag);
}
// 输出运算符重载
std::ostream& operator<<(std::ostream& os, const Complex& c) {
os << "(" << c.real << ", " << c.imag << ")";
return os;
}
// 测试代码
int main() {
Complex c1(3.0, 2.0);
Complex c2(1.0, 4.0);
Complex result = c1 - c2;
std::cout << "c1 - c2 = " << result << std::endl;
return 0;
}
- 类定义:
Complex
类包含两个double
类型的私有成员变量real
(实部)和imag
(虚部)。
- 构造函数用于初始化复数的实部和虚部,默认值为0。
- 友元函数声明:
friend Complex operator-(const Complex& a, const Complex& b);
声明减法运算符重载的友元函数。
friend std::ostream& operator<<(std::ostream& os, const Complex& c);
声明输出运算符重载的友元函数。
- 减法运算符重载:
operator-
函数实现两个复数相减,返回一个新的Complex
对象,其实部和虚部分别是两个操作数实部和虚部相减的结果。
- 输出运算符重载:
operator<<
函数将复数以(实部, 虚部)
的格式输出到流os
中,并返回该流对象。
- 测试代码:
- 在
main
函数中创建两个Complex
对象c1
和c2
。
- 执行
c1 - c2
操作并将结果存储在result
中。
- 使用重载的输出运算符输出
c1 - c2
的结果。