重载+或-运算符
重载方式有两种,一种是全局函数的方式,另外一种是成员函数的方式。
全局函数
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;
}
成员函数的方式
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;
}
重载++或者- -
分为前置++和后置++
同样两种方法,全局或者成员函数的方式
全局方式 注释为成员函数方式,隐藏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;
}
后置++需要在函数中加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;
}
- -的重载和++同理
原文链接: https://www.cnblogs.com/9527s/p/13129443.html
欢迎关注
微信关注下方公众号,第一时间获取干货硬货;公众号内回复【pdf】免费获取数百本计算机经典书籍;
也有高质量的技术群,里面有嵌入式、搜广推等BAT大佬
原创文章受到原创版权保护。转载请注明出处:https://www.ccppcoding.com/archives/355253
非原创文章文中已经注明原地址,如有侵权,联系删除
关注公众号【高性能架构探索】,第一时间获取最新文章
转载文章受原作者版权保护。转载请注明原作者出处!