C++面向对象编程 运算符重载

                                C++面向对象编程

 运算复重载“: 是一运算符可以完成不同的运算功能


        要注意几点:
                  1)不能改变运算符的优先级
                  2) 不能该百年运算符的结合性
                   3) 不能创造新的运算符
                   4) 不能改变操作符的操作数的个数
    


1、运算符重载函数作为类的成员函数
   
基本格式
    函数类型  operator 重载运算(形参表)
{
       函数体;
}

  2、运算符重载函数作为类的友元函数
   
  基本格式:

     friend  函数类型  operator 重载运算符(形参表) 
     {
        
            函数体;

     }
 
下面看代码:
程序功能实现复数的加减功能
#include<iostream>
using namespace  std;

class Complex
{//利用重载运算符进行运算
    //新建一个计算复数类函数
    float a;
    float b;
    public :
        Complex(){}
        Complex(float a1, float b1):a(a1), b(b1){}   //常数据成员赋值
        friend Complex operator+(Complex &, Complex &);
        friend Complex operator -(Complex &, Complex &);
        void disp()
        {//:: 作用域运算符号, 该运算符左边是一个类名不是一个表达式
            cout<<a;
            if(b > 0) cout<<" + ";
            cout<<b<<"i"<<endl;
        }

};
Complex::Complex operator +(Complex  &c, Complex &d)
{//这个情况是第一种格式重载运算符函数
     Complex tmp ;
     tmp.a = d.a + c.a;
     tmp.b = d.b + c.b;
     return tmp;
}
//下面是元素符友元函数操作
Complex operator -(Complex &c, Complex &d)
{
    Complex tmp ;
    tmp.a = c.a - d.a;
    tmp.b = c.b - d.b;
    return tmp;
}
int main()
{
    Complex s1(1, 3) , s2(3, 4), s3, s4;
    s3 = s1 + s2 ;
    s4 = s2 - s1;
    cout<<"s1 + s2 = ";
    s3.disp();
    cout<<"s2 - s1 = ";
    s4.disp();
    return 0;
}

重载单目运算符 
      格式  :
      函数类型  operator ++()    ++A  //前缀运算
      函数类型  operator ++(int)   A++ //后缀运算

      看代码:

#include<iostream>
using namespace std;

class myclass
{
     int n ;
     public :
        myclass(int i){ n = i;}
        myclass operator  ++(){ n += 3;}    //  前缀运算符号
        myclass operator  ++(int){n*= 3;}   //后最运算符
        void disp()
        {
            cout<<" n = "<<n<<endl;
        }

};
int main()
{
    myclass s1(1), s2(2);
    s1++ ;    //后缀运算符
    s1.disp();
    ++s2;
    s2.disp();
    return 0;
}


wangxiaoming CSDN认证博客专家 架构 Spring Boot Redis
博客是很好的总结和记录工具,如果有问题,来不及回复,关注微信公众号:程序员开发者社区,获取我的联系方式,向我提问,也可以给我发送邮件,联系 1275801617@qq.com
©️2020 CSDN 皮肤主题: Age of Ai 设计师:meimeiellie 返回首页
实付 19.89元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、C币套餐、付费专栏及课程。

余额充值