• 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;
    }
  • 相关阅读:
    java.lang.ClassNotFoundException:org.springframework.web.context.ContextLoaderListener问题解决
    Unix
    Win7 扩容磁盘分区
    在Java中怎样高效的推断数组中是否包括某个元素
    2.JAVA编程思想——一切都是对象
    Cookie-Parser是怎样解析签名后的cookie的(同一时候对cookie和cookie-signature进行说明)
    hive 索引
    Javascript属性constructor/prototype的底层原理
    HTML5 的四个亮点
    零基础学python-1.5 第一个程序
  • 原文地址:https://www.cnblogs.com/Blue-Moniter4/p/9501944.html
Copyright © 2020-2023  润新知