就像标题所说的那样,我正在尝试实现一个运算符^(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
。请告诉我为什么会这样。如果有人能告诉我如何ONE
在第 15 行创建一个常量类对象,如 Java 中的 BigInteger.ONE,我也非常感谢。