原文: https://www.programiz.com/cpp-programming/operator-overloading/binary-operator-overloading

在此示例中,您将学习使用-运算符重载来减去复数。

要理解此示例,您应该了解以下 C++ 编程主题:


由于-是二元运算符(对两个操作数进行运算的运算符),因此应将其中一个操作数作为参数传递给运算符函数,其余过程类似于一元运算符的重载


示例:用于减去复数的二元运算符重载

  1. #include <iostream>
  2. using namespace std;
  3. class Complex
  4. {
  5. private:
  6. float real;
  7. float imag;
  8. public:
  9. Complex(): real(0), imag(0){ }
  10. void input()
  11. {
  12. cout << "Enter real and imaginary parts respectively: ";
  13. cin >> real;
  14. cin >> imag;
  15. }
  16. // Operator overloading
  17. Complex operator - (Complex c2)
  18. {
  19. Complex temp;
  20. temp.real = real - c2.real;
  21. temp.imag = imag - c2.imag;
  22. return temp;
  23. }
  24. void output()
  25. {
  26. if(imag < 0)
  27. cout << "Output Complex number: "<< real << imag << "i";
  28. else
  29. cout << "Output Complex number: " << real << "+" << imag << "i";
  30. }
  31. };
  32. int main()
  33. {
  34. Complex c1, c2, result;
  35. cout<<"Enter first complex number:\n";
  36. c1.input();
  37. cout<<"Enter second complex number:\n";
  38. c2.input();
  39. // In case of operator overloading of binary operators in C++ programming,
  40. // the object on right hand side of operator is always assumed as argument by compiler.
  41. result = c1 - c2;
  42. result.output();
  43. return 0;
  44. }

在该程序中,创建了三个Complex类型的对象,并要求用户输入存储在对象c1c2中的两个复数的实部和虚部。

然后执行语句result = c1 -c 2。 该语句调用运算符函数Complex operator - (Complex c2)

执行result = c1 - c2时,会将c2作为参数传递给运算符。

在 C++ 编程中二元运算符的运算符重载的情况下,编译器始终将运算符右侧的对象作为参数。

然后,此函数将所得的复数(对象)返回到显示在屏幕上的main()函数。

虽然,本教程包含-运算符的重载,但 C++ 编程中的二元运算符(如+*<+=等)也可以类似的方式进行重载。