2、编写一个复数类模板Complex,其数据成员real和image的类型未知,定义相同的成员函数,实现构造、输出、加、减等功能。在主函数中定义模板类对象,分别以int和double实例化类型参数,实现复数中的相关操作
时间: 2024-03-10 11:46:44 浏览: 81
好的,我来为您解答这个问题。
首先,我们可以定义一个复数类模板Complex,其中包含实部和虚部两个数据成员,类型为模板参数T,如下所示:
```c++
template<typename T>
class Complex {
private:
T real;
T image;
public:
Complex(T r = 0, T i = 0) : real(r), image(i) {}
Complex(const Complex<T>& c) : real(c.real), image(c.image) {}
void print() const {
std::cout << real << " + " << image << "i" << std::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);
}
};
```
在上述代码中,我们定义了模板类Complex,其中包含了构造函数、输出函数以及加、减等功能的实现。其中,构造函数用于初始化实部和虚部;输出函数用于输出复数;加、减等功能的实现使用了运算符重载的方式。
接下来,在主函数中,我们可以分别以int和double实例化类型参数,实现复数中的相关操作,如下所示:
```c++
int main() {
Complex<int> c1(1, 2);
Complex<double> c2(3.4, 5.6);
Complex<int> c3 = c1 + c1;
Complex<double> c4 = c2 - c2;
c1.print();
c2.print();
c3.print();
c4.print();
return 0;
}
```
在上述代码中,我们分别定义了两个模板类对象c1和c2,分别以int和double实例化类型参数。然后,我们可以通过运算符重载的方式实现复数的加、减等操作,并通过输出函数打印出结果。
以上就是实现题目要求的复数类模板Complex的相关代码。
阅读全文