#include<iostream>
#include<string>
using namespace std;
class point
{
int x;
int y;
int z;
public:
point() {}
point(int xx , int yy , int zz )
{
x = xx;
y = yy;
z = zz;
}
void set_xy(int mx, int my, int mz)
{
x = mx;
y = my;
z = mz;
}
//再设置一个拷贝构造函数
point(const point &p)
{
x = p.x;
y = p.y;
z = p.z;
}
friend point operator++(point& a);
friend point operator++(point& ,int); //后加
friend point operator--(point& a);
friend point operator--(point&, int);
void show()
{
cout <<"x="<<x<<" "<<"y="<<y<<" " <<"z="<<z<<endl;
}
};
point operator++(point& a) { //前置加加,先加加,再使用
a.x++;
a.y++;
a.z++;
return a;
}
point operator++(point&a ,int ) { //后置 ++ 先使用,后++
point p(a);
a.x++;
a.y++;
a.z++;
return p;
}
point operator--(point& a) { //前置加加,先加加,再使用
a.x--;
a.y--;
a.z--;
return a;
}
point operator--(point& a, int) { //先使用,后++
point p(a);
a.x--;
a.y--;
a.z--;
return p;
}
int main()
{
int x, y, z;
cin >> x >> y >> z;
point p1(x, y, z);
point p2;
p1++; //先使用,后++
p1.show();
p1.set_xy(x, y, z); //恢复原值
p2 = p1++; //把p1的值先赋给p2再加加
p2.show();
p1.set_xy(x, y, z);//再恢复原值
(++p1).show(); //前加,先加加后使用
p1.show();
p1.set_xy(x, y, z);//再恢复原值
p1--; //先使用,后减减
p1.show();
p1.set_xy(x, y, z);//再恢复原值
p1.show();
(--p1).show();
p1.show();
return 0;
}
【C++基本的++--运算符重载】
最新推荐文章于 2024-08-12 21:47:59 发布