2、编写一个复数类模板Complex,其数据成员real和image的类型未知, 定义相同的成员函数,实现构造、输出、加、减等功能。 在主函数中定义模板类对象,分别以int和double实例化类型参数,实现复数中的相关操作。
时间: 2024-03-17 16:46:47 浏览: 88
面向对象设计自定义一个示意性的复数类型complex,其中含有若干个成员函数
4星 · 用户满意度95%
好的,我会尽力回答你的问题。
以下是一个实现Complex类模板的示例代码:
```c++
#include <iostream>
using namespace std;
template <typename T>
class Complex {
private:
T real; // 复数的实部
T image; // 复数的虚部
public:
Complex(T r, T i): real(r), image(i) {} // 构造函数
// 重载加法运算符
Complex<T> operator+(const Complex<T>& other) const {
Complex<T> result(real + other.real, image + other.image);
return result;
}
// 重载减法运算符
Complex<T> operator-(const Complex<T>& other) const {
Complex<T> result(real - other.real, image - other.image);
return result;
}
// 输出函数
void print() const {
cout << "(" << real << ", " << image << ")" << endl;
}
};
int main() {
// 实例化int类型的复数
Complex<int> a(1, 2);
Complex<int> b(3, 4);
// 输出a和b
cout << "a = ";
a.print();
cout << "b = ";
b.print();
// 计算a+b和a-b
Complex<int> c = a + b;
Complex<int> d = a - b;
// 输出c和d
cout << "a + b = ";
c.print();
cout << "a - b = ";
d.print();
// 实例化double类型的复数
Complex<double> e(1.5, 2.5);
Complex<double> f(3.5, 4.5);
// 输出e和f
cout << "e = ";
e.print();
cout << "f = ";
f.print();
// 计算e+f和e-f
Complex<double> g = e + f;
Complex<double> h = e - f;
// 输出g和h
cout << "e + f = ";
g.print();
cout << "e - f = ";
h.print();
return 0;
}
```
在上面的示例代码中,我们定义了一个Complex类模板,它有两个数据成员real和image,表示复数的实部和虚部。我们实现了构造函数、输出函数、加法运算符和减法运算符。在主函数中,我们分别使用int和double实例化了Complex类模板,并对其进行了加、减等操作。执行上述代码,输出如下:
```
a = (1, 2)
b = (3, 4)
a + b = (4, 6)
a - b = (-2, -2)
e = (1.5, 2.5)
f = (3.5, 4.5)
e + f = (5, 7)
e - f = (-2, -2)
```
这是一个简单的示例,你可以根据自己的需要扩展其它功能。希望对你有所帮助!
阅读全文