gpt4 book ai didi

c++ - 在 C++ 中实现复数幂函数?

转载 作者:行者123 更新时间:2023-11-30 02:04:26 30 4
gpt4 key购买 nike

如标题所述,我正在尝试实现一个运算符 ^(int n),它将计算复数的 n 次方。我知道 this 是指向当前类对象的指针,所以我想出了这段代码:

    class Complex{
protected:
float a,b;
public:
Complex() {a=0;b=0;}
Complex(float x, float y){a=x;b=y;}
void set(float x, float y){a=x;b=y;}
Complex operator*(Complex C){
Complex temp;
temp.a=a*C.a-b*C.b;
temp.b=a*C.b+b*C.a;
return temp;
}
Complex operator^(int n){
Complex ONE=Complex(1,0);
if (n<=0) return ONE;
return ((*this)*((*this)^(n-1)));
}
void Display(){
cout<<a<<' '<<b<<endl;
}
};
int main() {
Complex C;
C.set(2,0);
C=C^3;
C.Display();
}

C.Display() 应该打印 8 0 但是当我在 eclipse 中运行时它显示 2 0。请告诉我为什么会这样。如果有人能告诉我如何使第 15 行的 ONE 成为常量类对象,如 Java 中的 BigInteger.ONE,我也非常感激。

最佳答案

你知道有一个 std::complex 吗?模板类型,有自己的 std::pow特化?

#include <complex>
#include <iostream>

int main() {

std::complex<double> c(2,0);
std::complex<double> c3 = pow(c, 3);
std::cout << c3 << "\n";
}

产生

(8,0)

此外,operator^ 是按位异或。将其重新用作幂运算符会导致代码非常困惑。

除此之外,您的代码产生了您期望的结果,因此问题一定出在其他地方。

关于c++ - 在 C++ 中实现复数幂函数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10688134/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com