• c++的运算符的重载的代码


    #include"iostream"
    using namespace std;


    class comp
    {
    public:
    friend ostream& operator<<(ostream &out,comp &thi);
    friend comp &operator+(comp &a,comp &b);//因为函数的是有属性,外界不能访问到,所以将这个函数声明为有元函数
    friend comp &operator--(comp &a);//一元运算符的重载
    comp(void);//这个是方便后面的创建对象不用给参数,当然你也可以改第二个构造函数的表示方式
    comp(int a,int b){
    this->a=a;
    this->b=b;
    }
    ~comp(){
    cout<<"析构函数调用完毕"<<endl;
    }
    void printC(){//用来检验是否初始化了a和b这两个变量
    cout<<"得到的a和b的值分别为:"<<a<<" "<<b<<endl;
    }
    //这个是前置的++运算
    //以下是一元运算符的重载的情况
    comp &operator++(){//comp这个类的属性值自加一
    this->a++;
    this->b++;
    return *this;
    }
    //下面这个是后置的++运算
    comp &operator++(int){//多添加一个占位符,编译器看到之后就会对这种情况进行判断
    comp temp=*this;
    this->a++;
    this->b++;
    return temp;//效果是先赋值在加一
    }
    //二元运算符的重载
    //先将下面的重载注释掉,不然会出现多个重载的情况,导致编译器不知道使用哪一个重载的
    //下面这个是成员函数的运算符的重载
    // comp &operator+(comp &b){
    // return *(new comp(this->a+b.a,this->b+b.b));
    //}


    private:
    int a;
    int b;


    };
    //输出运算符的重载
    ostream& operator<<(ostream &out,comp &thi){//返回的当左值所以要返回为引用的类型
    out<<"得到的a和b的值分别为:"<<thi.a<<" "<<thi.b;
    return out;
    }
    //二元运算符的重载
    //这个是全局函数的运算符的重载
    comp &operator+(comp &a,comp &b){
    return *(new comp(a.a+b.a,a.b+b.b));
    }
    comp &operator--(comp &a){//comp这个类的属性值自减一
    a.a--;
    a.b--;
    return a;
    }
    void main(){
    comp t1(1,2),t2(2,3);
    comp t3=t1+t2;
    t3.printC();
    cout<<t1<<endl;
    system("pause");
    }
  • 相关阅读:
    base64编码
    ios开发之指纹识别
    date
    php的学习
    mac下安装mysql遇到的无法连接的问题
    关于git上传文件过大报错的问题 remote: warning: Large files detected.
    安卓开发中Theme.AppCompat.Light的解决方法
    ubuntu操作系统中卸载mysql的安装与卸载
    重新格式化删除U盘隐藏分区与如何在LMT下安装非Ghost win7
    网易有道笔试2015-05-12
  • 原文地址:https://www.cnblogs.com/csnd/p/16675664.html
Copyright © 2020-2023  润新知