在c++中编写一个复数类模板Complex,其数据成员real和image的类型未知,定义相同的成员函数,实现构造、输出、加、减等功能。在主函数中定义模板类对象,分别以int和double实例化类型参数,实现复数中的相关操作。
时间: 2024-03-10 08:47:44 浏览: 19
好的,以下是示例代码:
```c++
#include <iostream>
using namespace std;
template<typename T>
class Complex {
private:
T real; // 实部
T image; // 虚部
public:
Complex(T r = 0, T i = 0) : real(r), image(i) { } // 构造函数
void print() const { // 输出函数
cout << real << (image < 0 ? "-" : "+") << abs(image) << "i" << endl;
}
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);
}
};
int main() {
Complex<int> c1(1, 2);
c1.print(); // 输出 1+2i
Complex<int> c2(3, 4);
c2.print(); // 输出 3+4i
Complex<int> c3 = c1 + c2;
c3.print(); // 输出 4+6i
Complex<int> c4 = c1 - c2;
c4.print(); // 输出 -2-2i
Complex<double> c5(1.5, 2.5);
c5.print(); // 输出 1.5+2.5i
Complex<double> c6(3.5, 4.5);
c6.print(); // 输出 3.5+4.5i
Complex<double> c7 = c5 + c6;
c7.print(); // 输出 5+7i
Complex<double> c8 = c5 - c6;
c8.print(); // 输出 -2-2i
return 0;
}
```
这个例子中,我们定义了一个复数类模板 `Complex`,其中包含了实部和虚部两个数据成员,以及构造函数、输出函数、加法和减法成员函数。在主函数中,我们分别以 `int` 和 `double` 实例化了 `Complex` 类型参数,实现了复数的相关操作。