编写一个复数类模板Complex,其数据成员real和image的类型未知,定义相同的成员函数,实现构造、输出、加、减等功能。在主函数中定义模板类对象,分别以int和double实例化类型参数,实现复数中的相关操作
时间: 2024-03-03 11:46:47 浏览: 23
好的,我理解了你的要求。以下是实现Complex类模板的示例代码:
```c++
#include <iostream>
using namespace std;
template <class T>
class Complex {
private:
T real;
T image;
public:
Complex(T r = 0, T i = 0): real(r), image(i) {}
void display() {
if (image >= 0) {
cout << real << "+" << image << "i" << endl;
} else {
cout << real << image << "i" << endl;
}
}
Complex operator+(Complex &c) {
return Complex(real + c.real, image + c.image);
}
Complex operator-(Complex &c) {
return Complex(real - c.real, image - c.image);
}
};
int main() {
Complex<int> c1(1, 2);
Complex<int> c2(3, 4);
Complex<int> c3 = c1 + c2;
Complex<double> c4(1.1, 2.2);
Complex<double> c5(3.3, 4.4);
Complex<double> c6 = c4 - c5;
c1.display();
c2.display();
c3.display();
c4.display();
c5.display();
c6.display();
return 0;
}
```
在这个示例代码中,我们使用了类模板Complex来定义复数类。在类模板中,我们使用了类型参数T,用来表示复数的数据成员real和image的类型。在构造函数中,我们使用了默认参数,以便在创建对象时可以不传入任何参数。
在类模板中,我们定义了display函数,用来输出复数的值。我们还定义了operator+和operator-函数,用来实现复数的加和减功能。在主函数中,我们分别创建了两个int类型的复数对象c1和c2,以及两个double类型的复数对象c4和c5。然后我们使用+和-运算符对它们进行操作,得到了新的复数对象c3和c6。最后,我们输出了所有的复数对象的值。
希望这个示例代码能够帮助你理解类模板的使用。