在c++中定义复数类,并在主函数定义类的对象进行调用测试。要求: ① 数据成员为双精度类型的实部和虚部。 ② 具有无参和有参的构造函数。 ③ 具有深拷贝构造函数。(选做) ④ 具有析构函数。 ⑤ 具有输出函数、求模函数、加法函数等。(选做内容:求模函数)
时间: 2024-12-29 21:33:08 浏览: 9
在C++中,我们可以定义一个复数类`Complex`来满足上述需求。以下是基本的实现:
```cpp
#include <iostream>
#include <cmath>
class Complex {
public:
// 数据成员
double real, imag;
// 构造函数
// 无参构造函数
Complex() : real(0), imag(0) {}
// 有参构造函数
Complex(double r, double i = 0) : real(r), imag(i) {}
// 深拷贝构造函数(选做)
Complex(const Complex& c) : real(c.real), imag(c.imag) {}
// 析构函数
~Complex() {}
// 输出函数
friend std::ostream& operator<<(std::ostream& os, const Complex& c) {
return os << c.real << " + " << c.imag << "i";
}
// 求模函数(选做)
double modulus() const {
return std::sqrt(real * real + imag * imag);
}
// 加法函数
Complex operator+(const Complex& c) const {
return Complex(real + c.real, imag + c.imag);
}
};
// 主函数
int main() {
// 创建复数对象并测试
Complex c1; // 使用默认构造函数
std::cout << "复数1: " << c1 << "\n";
Complex c2(3, 4); // 使用有参构造函数
std::cout << "复数2: " << c2 << "\n";
// 测试深拷贝构造函数(选做部分)
Complex c3(c2); // c3是c2的一个副本
std::cout << "复数3 (深拷贝): " << c3 << "\n";
// 输出复数的模(选做部分)
std::cout << "复数2的模: " << c2.modulus() << "\n";
// 测试加法
Complex c4 = c1 + c2;
std::cout << "复数1 + 复数2: " << c4 << "\n";
return 0;
}
```
在这个例子中,我们定义了一个包含实部和虚部的数据成员的复数类,提供了必要的构造函数、析构函数以及一些友元操作符。在主函数中展示了如何创建对象并进行简单的操作。注意,深拷贝构造函数和求模函数可以根据实际需求选择是否添加。
阅读全文