Как и в названии, я пытаюсь реализовать оператор^(int n), который будет вычислять комплексное число до n-й степени. Я знаю, что this
является указателем, который указывает на текущий объект класса, так что я придумал этот код:реализация комплексной функции мощности числа в C++?
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
но когда я побежал в затмить его отображения 2 0
. Пожалуйста, скажите мне, почему это происходит. Также очень признателен, если кто-нибудь может сказать мне, как сделать ONE
в строке 15 объектом постоянного класса, таким как BigInteger.ONE в Java.
Даже если это заманчиво - пожалуйста, не используйте '^' в качестве силового оператора в C++, он имеет неправильный приоритет. – leftaroundabout
Что говорит отладчик? – zmbq
Что случилось с 'std :: complex' и' std :: pow'? – Fanael