21xrx.com
2024-11-22 09:30:26 Friday
登录
文章检索 我的文章 写文章
C++类实现复数运算:加、减、乘、除
2023-06-22 17:08:07 深夜i     --     --
C++类 复数 运算

在C++中,复数是由实数和虚数构成的数值形式,通常表示为a+bi。其中a和b都是实数,而i代表虚数单位。在OOP(面向对象编程)概念中,我们可以使用C++类来实现复数运算。

首先,我们需要定义一个复数类,并将实数和虚数作为类的成员变量。这可以通过以下方式实现:


class Complex {

 private:

  double real;

  double imaginary;

 public:

  Complex()

    real = 0;

    imaginary = 0;

  

  Complex(double r, double i)

    real = r;

    imaginary = i;

  

};

在上述代码中,我们首先定义了一个Complex类,并创建了两个成员变量:real和imaginary。接着,我们创建了两个构造函数,用于初始化这些成员变量。构造函数可以接受实数和虚数参数,以便在创建一个新的复数对象时使用。

接下来,我们可以将运算符重载添加到我们的类中,包括加、减、乘、除运算符。这些运算符在C++中可以重载,使我们可以自定义它们的行为。以下是重载加法运算符的示例:


Complex operator+(const Complex &a, const Complex &b) {

  return Complex(a.real + b.real, a.imaginary + b.imaginary);

}

在上述代码中,我们定义了一个新的+操作符,并指定它的参数类型。该函数返回Complex对象。其中,我们使用传入的两个复数进行加法运算,并使用得到的结果创建新的复数对象。

类似地,我们还可以重载其他运算符,包括:


Complex operator-(const Complex &a, const Complex &b) {

  return Complex(a.real - b.real, a.imaginary - b.imaginary);

}

Complex operator*(const Complex &a, const Complex &b) {

  return Complex(a.real * b.real - a.imaginary * b.imaginary, a.real * b.imaginary + a.imaginary * b.real);

}

Complex operator/(const Complex &a, const Complex &b) {

  double denominator = b.real * b.real + b.imaginary * b.imaginary;

  return Complex((a.real * b.real + a.imaginary * b.imaginary) / denominator, (a.imaginary * b.real - a.real * b.imaginary) / denominator);

}

在上述代码中,我们分别重载减、乘、除运算符,以便与C++类中的加法运算符一起使用。

最后,我们可以在程序中使用这些类和运算符来执行复数计算:


#include <iostream>

using namespace std;

int main() {

  Complex x(3, 2);

  Complex y(1, 7);

  Complex z = x + y;

  cout << "x + y = " << z.real << " + " << z.imaginary << "i" << endl;

  z = x - y;

  cout << "x - y = " << z.real << " + " << z.imaginary << "i" << endl;

  z = x * y;

  cout << "x * y = " << z.real << " + " << z.imaginary << "i" << endl;

  z = x / y;

  cout << "x / y = " << z.real << " + " << z.imaginary << "i" << endl;

  return 0;

}

在上述代码中,我们首先创建了两个复数对象x和y,并使用重载的加、减、乘、除运算符执行复数运算。程序将计算结果输出到控制台。这样,我们就可以使用C++类实现复数运算了。

  
  

评论区

{{item['qq_nickname']}}
()
回复
回复