编写一个复数类模板Complex,其数据成员real和image的类型未知,定义相同的成员函数,实现构造、输出、加、减等功能。在主函数中定义模板类对象,分别以int和double实例化类型参数,实现复数中的相关操作。
时间: 2024-03-03 09:48:11 浏览: 51
好的,我来回答您的问题。下面是实现上述要求的代码:
```cpp
#include <iostream>
using namespace std;
template <typename T>
class Complex {
private:
T real, image;
public:
Complex(T r = 0, T i = 0) : real(r), image(i) {}
Complex operator+(const Complex& c) {
return Complex(real + c.real, image + c.image);
}
Complex operator-(const Complex& c) {
return Complex(real - c.real, image - c.image);
}
friend ostream& operator<<(ostream& os, const Complex& c) {
os << c.real << " + " << c.image << "i";
return os;
}
};
int main() {
Complex<int> c1(1, 2);
Complex<double> c2(2.5, 3.5);
cout << "c1 = " << c1 << endl;
cout << "c2 = " << c2 << endl;
cout << "c1 + c2 = " << c1 + c2 << endl;
cout << "c1 - c2 = " << c1 - c2 << endl;
return 0;
}
```
在上面的代码中,我们定义了一个复数类模板`Complex`,其中数据成员`real`和`image`的类型为模板参数`T`。我们实现了构造函数、输出运算符`<<`、加法运算符`+`和减法运算符`-`。其中,加法和减法的运算结果都是一个新的`Complex`对象。
在主函数中,我们分别实例化了`Complex<int>`和`Complex<double>`两个类型的对象,然后进行了一些复数运算。注意,在输出运算符`<<`的实现中,我们需要用`friend`关键字来声明它是一个友元函数,这样才能访问类的私有成员。
希望我的回答能够帮助到您,如果您还有其他问题,可以继续提问哦~
阅读全文