您的代码中有一些问题。首先,构造函数应该初始化num和den为0,而不是在构造函数体内赋值为0。其次,函数重载的构造函数应该有一个参数列表,而不是空参数列表。最后,在运算符重载函数中,参数应该是常量引用,以避免不必要的拷贝。
另外,您的代码中定义了一个Simplify函数,但是没有实现它。如果您想使用这个函数来简化有理数的分数形式,您需要补充这个函数的实现。
下面是修正后的代码:#include <iostream>class Complex{public: Complex(); Complex(int a, int b); virtual ~Complex(); Complex operator+(const Complex& d); Complex operator-(const Complex& d); Complex operator*(const Complex& d); Complex operator/(const Complex& d); void Print();private: int num; int den;};Complex::Complex(){ num = 0; den = 0;}Complex::Complex(int a, int b){ num = a; den = b;}Complex::~Complex(){}Complex Complex::operator+(const Complex& d){ Complex temp; temp.num = num * d.den + d.num * den; temp.den = den * d.den; return temp;}Complex Complex::operator-(const Complex& d){ Complex temp; temp.num = num * d.den - d.num * den; temp.den = den * d.den; return temp;}Complex Complex::operator*(const Complex& d){ Complex temp; temp.num = num * d.num; temp.den = den * d.den; return temp;}Complex Complex::operator/(const Complex& d){ Complex temp; temp.num = num * d.den; temp.den = den * d.num; return temp;}void Complex::Print(){ std::cout << num << "/" << den << std::endl;}
这样,您就可以使用Complex类来进行有理数的运算了。例如:int main(){ Complex c1(1, 2); Complex c2(3, 4); Complex c3 = c1 + c2; c3.Print(); // 输出:10/8 Complex c4 = c1 - c2; c4.Print(); // 输出:-2/8 Complex c5 = c1 * c2; c5.Print(); // 输出:3/8 Complex c6 = c1 / c2; c6.Print(); // 输出:4/6 return 0;}
希望能帮助到您!如果还有其他问题,请随时提问。
以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。 |