1. 类的定义,构造函数,成员函数 2.两个复数运算的运算符重载.重载 +、-、*、/、++、--、<<、>>等运算符 3. double型数可以转换成复数
时间: 2023-07-10 07:30:03 浏览: 89
C++ 复数类的实现 运算符重载
好的,我来回答您的问题:
1. 类的定义,构造函数,成员函数
类是一种面向对象编程的抽象数据类型,可以封装数据和函数。类的定义包括类名、数据成员、成员函数等。构造函数是一种特殊的成员函数,用于创建对象时初始化数据成员。成员函数是类的函数成员,可以访问类的数据成员,并且可以在类的内部或外部进行调用。
下面是一个复数类的定义示例:
```cpp
class Complex {
private:
double real;
double imag;
public:
Complex(double r = 0, double i = 0): real(r), imag(i) {}
Complex operator+(const Complex& c) const;
Complex operator-(const Complex& c) const;
Complex operator*(const Complex& c) const;
Complex operator/(const Complex& c) const;
Complex& operator++();
Complex operator++(int);
Complex& operator--();
Complex operator--(int);
friend ostream& operator<<(ostream& os, const Complex& c);
friend istream& operator>>(istream& is, Complex& c);
operator double() const;
};
```
其中,private:表示私有成员,只能在类的内部访问;public:表示公有成员,可以在类的内部和外部访问。
2. 两个复数运算的运算符重载
复数的四则运算可以通过运算符重载实现。下面是复数加法、减法、乘法、除法、自增、自减、输出流、输入流运算符的重载实现:
```cpp
Complex Complex::operator+(const Complex& c) const {
return Complex(real + c.real, imag + c.imag);
}
Complex Complex::operator-(const Complex& c) const {
return Complex(real - c.real, imag - c.imag);
}
Complex Complex::operator*(const Complex& c) const {
return Complex(real * c.real - imag * c.imag, real * c.imag + imag * c.real);
}
Complex Complex::operator/(const Complex& c) const {
double r = c.real * c.real + c.imag * c.imag;
return Complex((real * c.real + imag * c.imag) / r, (imag * c.real - real * c.imag) / r);
}
Complex& Complex::operator++() {
++real;
++imag;
return *this;
}
Complex Complex::operator++(int) {
Complex c(*this);
++(*this);
return c;
}
Complex& Complex::operator--() {
--real;
--imag;
return *this;
}
Complex Complex::operator--(int) {
Complex c(*this);
--(*this);
return c;
}
ostream& operator<<(ostream& os, const Complex& c) {
os << c.real << "+" << c.imag << "i";
return os;
}
istream& operator>>(istream& is, Complex& c) {
is >> c.real >> c.imag;
return is;
}
```
3. double型数可以转换成复数
在类中,可以定义类型转换函数,将类对象转换为其他类型。下面是将复数转换为 double 类型的实现:
```cpp
Complex::operator double() const {
return real;
}
```
这样,我们就可以将一个复数对象转换为 double 类型,例如:
```cpp
Complex c(1.2, 3.4);
double d = c;
```
希望我的回答对您有所帮助。
阅读全文