定义一个复数类 Complex,重载运算符“-”,使之能用于复数与实数的减法运算。参加运算的两个操作数一个是类的对象,一个是实数,顺序任意。例如:i-c,c-i 均合法(其中,c 为复数类的对象,i 为实数)。
时间: 2023-06-15 09:06:15 浏览: 138
下面是一个可能的实现:
```cpp
class Complex {
public:
Complex(double real = 0, double imag = 0) : real_(real), imag_(imag) {}
// 重载运算符-
friend Complex operator-(const Complex& c, double d);
friend Complex operator-(double d, const Complex& c);
// 输出实部和虚部
void display() const {
std::cout << real_ << " + " << imag_ << "i" << std::endl;
}
private:
double real_;
double imag_;
};
// 实现运算符重载
Complex operator-(const Complex& c, double d) {
return Complex(c.real_ - d, c.imag_);
}
Complex operator-(double d, const Complex& c) {
return Complex(d - c.real_, -c.imag_);
}
```
在这个实现中,我们使用了友元函数来重载运算符,这样可以方便地访问类的私有成员变量。其中,第一个运算符重载函数实现了复数对象减去实数的操作,第二个运算符重载函数实现了实数减去复数对象的操作。注意,在第二个函数中,我们需要将虚部取相反数才能得到正确的结果。使用这个类,我们可以这样进行运算:
```cpp
Complex c(1, 2);
Complex result1 = c - 3.5; // 复数对象减去实数
result1.display(); // 输出 "-2.5 + 2i"
Complex result2 = 5.5 - c; // 实数减去复数对象
result2.display(); // 输出 "4.5 - 2i"
```
阅读全文