用c++编写一个复数类模板Complex,其数据成员real和image的类型未知,定义相同的成员函数,实现构造、输出、加、减等功能。在主函数中定义模板类对象,分别以int和double实例化类型参数,实现复数中的相关操作
时间: 2024-03-03 12:46:49 浏览: 15
下面是一个复数类模板Complex的实现:
```c++
#include <iostream>
using namespace std;
template <typename T>
class Complex {
public:
T real, image;
Complex(T r = 0, T i = 0) : real(r), image(i) {}
Complex<T> operator+(const Complex<T>& c) const {
return Complex<T>(real + c.real, image + c.image);
}
Complex<T> operator-(const Complex<T>& c) const {
return Complex<T>(real - c.real, image - c.image);
}
void print() {
cout << real << "+" << image << "i" << endl;
}
};
int main() {
Complex<int> c1(1, 2);
Complex<int> c2(3, 4);
Complex<int> c3 = c1 + c2;
c3.print();
Complex<double> c4(1.5, 2.5);
Complex<double> c5(3.5, 4.5);
Complex<double> c6 = c4 - c5;
c6.print();
return 0;
}
```
这个复数类模板接受一个类型参数T,用于指定实部和虚部的数据类型。它有两个数据成员real和image,分别表示实部和虚部。它定义了一个构造函数,可以接受实部和虚部的初始值。它还定义了加和减的操作符重载,以及一个打印函数print。在主函数中,我们定义了两个Complex对象c1和c2,它们的类型参数为int,以及两个Complex对象c4和c5,它们的类型参数为double。我们分别对它们进行加和减的操作,并将结果存储到新的Complex对象c3和c6中,最后输出它们的值。
输出结果为:
```
4+6i
-2+-2i
```
可以看到,这个复数类模板可以用于不同类型的变量,实现复数的相关操作。