• 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");
    }
  • 相关阅读:
    使用语句修改数据表结构
    C# 写日志到文件
    mysql 语句要求
    跨discuz站获取
    php 记录图片浏览次数次数
    js获取url传递参数值
    jquery.validate.js 验证表单时,在IE当中未验证就直接提交的原因
    mkfs
    mount
    dd
  • 原文地址:https://www.cnblogs.com/csnd/p/16675664.html
Copyright © 2020-2023  润新知