c++ 重载运算符

重载+或-运算符

重载方式有两种,一种是全局函数的方式,另外一种是成员函数的方式。

全局函数

class MyClass
{


public:
    int x;
    int y;

    MyClass(int x,int y);

    ~MyClass();void print()
    {
        cout << "x = " << x<< "ty = " << y << endl;
    }
};
MyClass operator+(MyClass &c1, MyClass &c2)
{
    MyClass res(c1.x + c2.x, c1.y + c2.y);
    return res;
}

MyClass::MyClass(int x,int y)
{
    this->x =x;
    this->y = y;

}

MyClass::~MyClass()
{


}
int _tmain(int argc, _TCHAR* argv[])
{

    MyClass c1(2,3);
    MyClass c2(4,5);
    MyClass c3 = c1+c2;

    c3.print();
     return 0;

}

c++ 重载运算符

 

 

成员函数的方式

class MyClass
{


public:
    int x;
    int y;

    MyClass(int x,int y);

    ~MyClass();

     MyClass& operator+( MyClass &c1); //成员函数的声明
    void print()
    {
        cout << "x = " << x<< "ty = " << y << endl;
    }
};


MyClass& MyClass::operator+( MyClass &c1) //实现需要加 域::   此处隐藏指向对象的this指针
{
    MyClass res(c1.x + this->x, c1.y + this->y);
    return res;
}


MyClass::MyClass(int x,int y)
{
    this->x =x;
    this->y = y;

}

MyClass::~MyClass()
{


}int _tmain(int argc, _TCHAR* argv[])
{

    MyClass c1(2,3);
    MyClass c2(4,5);
    MyClass c3 = c1+c2;

    c3.print();
     return 0;
}

c++ 重载运算符

 

 

 

重载++或者- -

分为前置++和后置++

同样两种方法,全局或者成员函数的方式

全局方式   注释为成员函数方式,隐藏this指针

class MyClass
{


public:
    int x;
    int y;

    MyClass(int x,int y);

    ~MyClass();

//MyClass& operator++(); 成员函数方式
void print() { cout << "x = " << x<< "ty = " << y << endl; } };
MyClass::MyClass(
int x,int y) { this->x =x; this->y = y; } MyClass::~MyClass() { } MyClass& operator ++(MyClass &c1)//前置++ { c1.x++; c1.y++; return c1; }

/*

MyClass& MyClass::operator ++()//前置++  成员函数的方式
{
this->x++;
this->y++;
return *this;
}

*/
int _tmain(int argc, _TCHAR* argv[]) { MyClass c1(2,3); ++c1; c1.print(); return 0; }

c++ 重载运算符

 

 

 

后置++需要在函数中加int 防止与前置++重复

class MyClass
{


public:
    int x;
    int y;

    MyClass(int x,int y);

    ~MyClass();

    MyClass& operator++(int);

    void print()
    {
        cout << "x = " << x<< "ty = " << y << endl;
    }
};



MyClass::MyClass(int x,int y)
{
    this->x =x;
    this->y = y;
}

MyClass::~MyClass()
{
}


MyClass& MyClass::operator ++(int)//后置++
{
    this->x++;
    this->y++;
    return *this;
}

/*
MyClass& operator ++( MyClass c1,int)//后置++ 全局函数方式
{
    c1.x++;
    c1.y++;
    return c1;
}
*/

int _tmain(int argc, _TCHAR* argv[])
{

    MyClass c1(2,3);
    c1++;
    c1.print();
    return 0;

}

c++ 重载运算符

 

 - -的重载和++同理

 

参考博客:https://www.cnblogs.com/qq209049127/p/10542475.html

原文链接: https://www.cnblogs.com/9527s/p/13129443.html

欢迎关注

微信关注下方公众号,第一时间获取干货硬货;公众号内回复【pdf】免费获取数百本计算机经典书籍;

也有高质量的技术群,里面有嵌入式、搜广推等BAT大佬

    c++ 重载运算符

原创文章受到原创版权保护。转载请注明出处:https://www.ccppcoding.com/archives/355253

非原创文章文中已经注明原地址,如有侵权,联系删除

关注公众号【高性能架构探索】,第一时间获取最新文章

转载文章受原作者版权保护。转载请注明原作者出处!

(0)
上一篇 2023年3月2日 上午9:07
下一篇 2023年3月2日 上午9:07

相关推荐