21xrx.com
2024-12-22 20:05:08 Sunday
登录
文章检索 我的文章 写文章
C++复数类的友元函数:加、减、乘、除。
2023-07-09 05:56:43 深夜i     --     --
C++ 复数类 友元函数

在C++编程语言中,复数类是一个很重要的概念。复数有实数和虚数两部分组成,因此我们需要在定义复数类时,不仅要定义实部和虚部,还需要定义复数的加减乘除等操作。为了方便实现这些操作,我们可以定义一些友元函数。

友元函数是指可以访问类中私有成员变量和私有成员函数的非成员函数。在复数类中,我们可以定义四个友元函数,分别实现复数的加、减、乘、除操作。

首先,我们需要定义复数类,其中包括实部和虚部以及相应的构造函数、析构函数和一些成员函数。然后,我们就可以定义友元函数了。

复数加法函数的定义如下:


friend Complex operator+(const Complex& c1, const Complex& c2)

{

  Complex sum;

  sum.real = c1.real + c2.real;

  sum.imag = c1.imag + c2.imag;

  return sum;

}

其中,`operator+`是加法运算符重载函数,用来实现复数之间的加法操作。两个复数相加的实部是实部相加,虚部也是虚部相加,因此我们可以分别计算实部和虚部,最后返回结果。

复数减法函数的定义如下:


friend Complex operator-(const Complex& c1, const Complex& c2)

  Complex diff;

  diff.real = c1.real - c2.real;

  diff.imag = c1.imag - c2.imag;

  return diff;

同样地,我们可以用减法运算符重载函数来实现复数之间的减法操作。计算方式与加法类似。

复数乘法函数的定义如下:


friend Complex operator*(const Complex& c1, const Complex& c2)

{

  Complex product;

  product.real = c1.real * c2.real - c1.imag * c2.imag;

  product.imag = c1.real * c2.imag + c1.imag * c2.real;

  return product;

}

复数的乘法需要用到公式 `(a+bi)(c+di)=(ac-bd)+(ad+bc)i`,因此我们可以将计算结果分为实部和虚部,返回一个包含实部和虚部的复数。

复数除法函数的定义如下:


friend Complex operator/(const Complex& c1, const Complex& c2)

{

  Complex quotient;

  double denominator = c2.real * c2.real + c2.imag * c2.imag;

  quotient.real = (c1.real * c2.real + c1.imag * c2.imag) / denominator;

  quotient.imag = (c1.imag * c2.real - c1.real * c2.imag) / denominator;

  return quotient;

}

复数的除法需要用到公式 `(a+bi)/(c+di)=(ac+bd)/(c^2+d^2)+((bc-ad)/(c^2+d^2))i`,与乘法类似,我们可以分别计算实部和虚部,最终返回结果。

通过定义这些友元函数,我们就可以在使用复数类时,直接进行加、减、乘、除等操作。这不仅方便了我们的编程,也提高了程序的可读性和可维护性。

  
  

评论区

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