• cpp-重载


    讨论的问题:用户能否根据自己的需要对cpp已提供的运算符进行重载,赋予他们新的含义,使之一名多用

    通过函数来实现复数相加

     1 #include <iostream>
     2 using namespace std;
     3 
     4 //定义Complex类
     5 class Complex
     6 {
     7 public:
     8 
     9     Complex()
    10     {
    11         real=0;
    12         imag=0;
    13     }//定义构造函数
    14 
    15     Complex(double r, double i)
    16     {
    17         real=r;
    18         imag=i;
    19     }//构造函数重载
    20 
    21     Complex complex_add(Complex &c2);//声明复数相加函数
    22 
    23     void display();//声明输出函数
    24 
    25 private:
    26 
    27     double real;
    28     double imag;
    29 };
    30 
    31 Complex Complex::complex_add(Complex &c2)//定义复数相加函数
    32 {
    33     Complex c;//创建对象c
    34     c.real=real+c2.real;//c.real=this->real+c2.real
    35     c.imag=imag+c2.imag;//c.imag=this->imag+c2.imag
    36     return c;
    37 }
    38 
    39 void Complex::display()
    40 {
    41     cout<<"("<<real<<","<<imag<<"i)"<<endl;
    42 }
    43 
    44 int main()
    45 {
    46     Complex c1(3,4),c2(5,-10),c3;//创建对象c1,c2,c3
    47     c3=c1.complex_add(c2);
    48 
    49     cout<<"c1=";
    50     c1.display();
    51 
    52     cout<<"c2=";
    53     c2.display();
    54 
    55     cout<<"c1+c2=";
    56     c3.display();
    57 
    58     return 0;
    59 }

    运算符重载的方法:定义一个重载运算符的函数

    使得指定的运算符不仅能实现原有的功能,而且能实现在函数中指定的新功能

    运算符的实质:函数的重载

    关键字:operator

    #include <iostream>
    using namespace std;
    
    //定义Complex类
    class Complex
    {
    public:
    
        Complex()
        {
            real=0;
            imag=0;
        }//定义构造函数
    
        Complex(double r, double i)
        {
            real=r;
            imag=i;
        }//构造函数重载
    
        /*
        Complex complex_add(Complex &c2);//声明复数相加函数
        */
    
        Complex operator +(Complex &c2);//声明重载运算符+的函数
    
        void display();//声明输出函数
    
    private:
    
        double real;
        double imag;
    };
    
    #if 0
    Complex Complex::complex_add(Complex &c2)//定义复数相加函数
    {
        Complex c;//创建对象c
        c.real=real+c2.real;
        c.imag=imag+c2.imag;
        return c;
    }
    #endif
    
    Complex Complex ::operator+(Complex &c2)
    {
        Complex c;
        c.real=real+c2.real;
        c.imag=imag+c2.imag;
        return c;
    }
    
    void Complex::display()
    {
        cout<<"("<<real<<","<<imag<<"i)"<<endl;
    }
    
    int main()
    {
        Complex c1(3,4),c2(5,-10),c3;//创建对象c1,c2,c3
        //c3=c1.complex_add(c2);
    
        c3=c1+c2;
    
        cout<<"c1=";
        c1.display();
    
        cout<<"c2=";
        c2.display();
    
        cout<<"c3 value:c1+c2=";
        c3.display();
    
        return 0;
    }
  • 相关阅读:
    Javascript 函数表达式
    当你在浏览器地址栏输入一个URL后回车,将会发生的事情?
    Angularjs 脏值检测
    Angularjs 双向绑定机制解析
    AngularJS 初用总结
    从jquery里的$.ajax()到angularjs的$http
    XSS攻击及防御
    很赞的源码平台
    GET和POST
    [转]xxx.hbm.xml模版
  • 原文地址:https://www.cnblogs.com/Blue-Moniter4/p/9501944.html
Copyright © 2020-2023  润新知