您的位置:首页 > 编程语言 > C语言/C++

C++运算符重载

2016-11-11 15:37 501 查看
#include <iostream>
using namespace std;

class Base
{
public:
Base()
{
x=y=0;
cout<<"Base()"<<this<<endl;
}
Base(int x, int y)
{
this->x = x;
this->y = y;
cout<<"Base(int x, int y)"<<this<<endl;
}
Base(const Base&b)
{
this->x = b.x;
this->y = b.y;
cout<<"Base(Base&b)"<<this<<endl;
}
~Base()
{
cout<<"~Base"<<this<<endl;
}
Base operator+(const Base& b)const
{
Base bRet;
bRet.x = x + b.x;
bRet.y = y + b.y;
cout<<"Base operator+"<<endl;
return bRet;
}
Base operator-(const Base&b)const
{
Base bRet;
bRet.x = this->x - b.x;
bRet.y = this->y - b.y;
cout<<"Base operator-"<<endl;
return bRet;
}
Base operator*(const Base&b)const
{
Base bRet;
bRet.x = this->x*b.x;
bRet.y = this->y*b.y;
cout<<"Base operator*"<<endl;
return bRet;
}
Base operator/(const Base&b)const
{
Base bRet;
bRet.x = this->x/b.x;
bRet.y = this->y/b.y;
cout<<"Base operator/"<<endl;
return bRet;
}
Base operator!()
{
Base bRet;
bRet.x = !x;
bRet.y = !y;
cout<<"Base operator!"<<endl;
return bRet;
}
Base& operator=(const Base&b)
{
this->x = b.x;
this->y = b.y;
cout<<"Base operator="<<endl;
return *this;
}
void display()
{
cout<<"x = "<<x<<", y = "<<y<<endl;
}
private:
int x;
int y;
};

int main()
{
Base b1(2, 3);
Base b2(6, 9);
Base b3 = b1 + b2;
cout<<"&b1 = "<<&b1<<endl;
cout<<"&b2 = "<<&b2<<endl;
cout<<"&b3 = "<<&b3<<endl;

b3.display();
b3 = b2 - b1;
b3.display();
b3 = b1 * b2;
b3.display();
b3 = b2/b1;
b3.display();
b3 = !b1;
b3.display();
b1 = b2;
b3.display();
b1.display();

return 0;
}

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: