• 【C++例题】复数类加减法运算重载—成员函数形式


    知识点:

    1.两个不同位置的const的不同意义

    2.形参有默认值的函数只能在类内给出,类外不能多余声明,即使默认值一样

    3.创建一个临时对象调用的是构造函数而非默认的复制构造函数

    4.重载的运算符可以当成普通运算符使用,但是要注意其本质是函数调用,要注意本体对象和传入参数的位置

    1. //例8-1_复数类加减法运算重载—成员函数形式
    2. #include
    3. using namespace std;
    4. //复数类定义
    5. class Complex {
    6. public:
    7. Complex(double r = 0.0, double i = 0.0);
    8. Complex operator+(const Complex& c2) const;
    9. Complex operator-(const Complex& c2) const;
    10. //函数的参数,是一个常量引用,表示该函数接受一个常量引用类型的 Complex 对象作为参数
    11. //const在函数声明的末尾表示这个函数是一个常量成员函数,即在这个函数中,不会修改对象的成员变量
    12. void display() const; //输出复数
    13. private:
    14. double real;
    15. double imag;
    16. };
    17. //构造函数
    18. Complex::Complex(double r /* = 0.0 */, double i /* = 0.0 */) :real(r), imag(i) {
    19. cout << "调用Complex构造函数" << endl;
    20. }
    21. //注意重载函数定义时的格式
    22. Complex Complex::operator+(const Complex& c2)const {
    23. //创建一个无名临时对象作为返回值
    24. return Complex(real + c2.real, imag + c2.imag);
    25. }
    26. Complex Complex::operator-(const Complex& c2)const {
    27. return Complex(real - c2.real, imag - c2.imag);
    28. }
    29. void Complex::display() const {
    30. cout << "(" << real << "," << imag << ")" << endl;
    31. }
    32. int main() {
    33. Complex c1(5, 4), c2(2, 10), c3;
    34. cout << "c1="; c1.display();
    35. cout << "c2="; c2.display();
    36. c3 = c1 - c2; //调用构造函数
    37. //c1 - c2 相当于函数调用 c1.operator-(c2)
    38. cout << "c3=c1-c2="; c3.display();
    39. c3 = c1 + c2; //正常引用
    40. //c1 + c2 相当于函数调用 c1.operator+(c2)
    41. cout << "c3=c1+c2="; c3.display();
    42. return 0;
    43. }
    1. // 输出
    2. 调用Complex构造函数
    3. 调用Complex构造函数
    4. 调用Complex构造函数
    5. c1=(5,4)
    6. c2=(2,10)
    7. 调用Complex构造函数
    8. c3=c1-c2=(3,-6)
    9. 调用Complex构造函数
    10. c3=c1+c2=(7,14)
  • 相关阅读:
    MT7981B+MT7976C+MT7531A RF定频测试方法
    如何解决由触发器导致 MySQL 内存溢出?
    最短路相关笔记
    nginx 发布vue项目 页面刷新出现404问题
    HTML+CSS+JS网页设计期末课程大作业 DW个人博客网站制作 web前端开发技术 web课程设计 网页规划与设计
    rocketmq
    JWT(令牌)
    MATLAB基于隐马尔可夫模型-高斯混合模型-期望最大化的MR图像分割
    1592 - Database (UVA)
    11.3 冒泡排序
  • 原文地址:https://blog.csdn.net/2302_79596028/article/details/138173074