编写程序声明Point类,在类中声明整型的私有成员变量x、y,声明成员函数Point& operator++( );Point operator++( int);以实现对Point类重载“++”(自增)运算符,声明成员函数Point& operator--( );Point operator--( int);以实现对Point类重载“--”(自减)运算符,实现对坐标值的改变。
时间: 2023-12-11 22:05:21 浏览: 171
好的,以下是Point类的代码实现,包括对“++”和“--”运算符的重载:
```c++
class Point {
private:
int x, y;
public:
Point(int x = 0, int y = 0) : x(x), y(y) {}
Point& operator++() {
++x;
++y;
return *this;
}
Point operator++(int) {
Point temp(*this);
++(*this);
return temp;
}
Point& operator--() {
--x;
--y;
return *this;
}
Point operator--(int) {
Point temp(*this);
--(*this);
return temp;
}
};
```
这个Point类有两个私有成员变量x和y,一个构造函数,以及对“++”和“--”运算符的重载。在前置“++”运算符中,我们将x和y都加1,并返回指向当前对象的引用。在后置“++”运算符中,我们首先创建一个临时对象存储当前对象的值,然后再调用前置“++”运算符,最后返回这个临时对象。对于前置“--”和后置“--”运算符的重载,同理。
相关问题
编写程序声明Point类,在类中声明整型的私有成员变量_x,_y,声明成员函数Point&operator++();Point&operator++(int);以实现对Point类重载“++”运算符,声明成员函数Point&operator–();Point&operator–(int);以实现对Point类重载“–”运算符,实现对坐标值的改变。
好的,这是一个简单的Point类的实现,包括对 "++" 和 "--" 运算符的重载:
```c++
#include<iostream>
using namespace std;
class Point {
private:
int _x;
int _y;
public:
Point() :_x(0), _y(0) {}
Point(int x, int y) :_x(x), _y(y) {}
Point& operator++() {
_x++;
_y++;
return *this;
}
Point operator++(int) {
Point temp(_x, _y);
_x++;
_y++;
return temp;
}
Point& operator--() {
_x--;
_y--;
return *this;
}
Point operator--(int) {
Point temp(_x, _y);
_x--;
_y--;
return temp;
}
friend ostream& operator<<(ostream& os, const Point& p) {
os << "(" << p._x << "," << p._y << ")";
return os;
}
};
int main() {
Point p(1, 2);
cout << p++ << endl; // (1,2)
cout << ++p << endl; // (3,4)
cout << p-- << endl; // (3,4)
cout << --p << endl; // (1,2)
return 0;
}
```
在这个例子中,我们定义了一个Point类,其中包括两个私有成员变量 _x 和 _y,两个构造函数用于初始化对象,以及对 "++" 和 "--" 运算符进行重载。
在前置 "++" 运算符中,我们将 _x 和 _y 分别加 1,并返回更新后的对象。在后置 "++" 运算符中,我们先创建一个临时对象,将其初始化为当前对象的值,然后将当前对象的 _x 和 _y 分别加 1,并返回临时对象。
在前置 "--" 运算符中,我们将 _x 和 _y 分别减 1,并返回更新后的对象。在后置 "--" 运算符中,我们先创建一个临时对象,将其初始化为当前对象的值,然后将当前对象的 _x 和 _y 分别减 1,并返回临时对象。
最后,我们定义了一个友元函数,用于将点的坐标输出到流中,以便我们在主函数中测试我们的类。
编写程序定义Point类,在类中定义整型的私有成员变量_x,_y,并定义成员函数Point&.operator++();和Point operator++(int),以实现对Point类重载“++”(自增)运ay( ) 算符,实现对坐标值的改变。 如果希望将“十十”(自增)运算符重载为友元函数,如何实现?
下面是定义Point类并重载自增运算符的示例代码:
```c++
#include<iostream>
using namespace std;
class Point{
private:
int _x;
int _y;
public:
Point(int x=0, int y=0):_x(x), _y(y){}
Point& operator++(){ // 前置自增运算符重载
_x++;
_y++;
return *this;
}
Point operator++(int){ // 后置自增运算符重载
Point tmp(*this);
_x++;
_y++;
return tmp;
}
friend Point& operator--(Point& p); // 友元函数前置自减运算符重载
friend Point operator--(Point& p, int); // 友元函数后置自减运算符重载
void print(){
cout << "(" << _x << ", " << _y << ")" << endl;
}
};
Point& operator--(Point& p){ // 友元函数前置自减运算符重载
p._x--;
p._y--;
return p;
}
Point operator--(Point& p, int){ // 友元函数后置自减运算符重载
Point tmp(p);
p._x--;
p._y--;
return tmp;
}
int main(){
Point p(1, 2);
cout << "p: ";
p.print(); // (1, 2)
++p;
cout << "++p: ";
p.print(); // (2, 3)
p++;
cout << "p++: ";
p.print(); // (3, 4)
--p;
cout << "--p: ";
p.print(); // (2, 3)
p--;
cout << "p--: ";
p.print(); // (1, 2)
return 0;
}
```
如果希望将自增运算符重载为友元函数,则需要将重载函数定义在类外,并在函数声明前加上关键字`friend`,示例如下:
```c++
class Point{
private:
int _x;
int _y;
public:
Point(int x=0, int y=0):_x(x), _y(y){}
friend Point& operator++(Point& p); // 友元函数前置自增运算符重载
friend Point operator++(Point& p, int); // 友元函数后置自增运算符重载
};
Point& operator++(Point& p){ // 友元函数前置自增运算符重载
p._x++;
p._y++;
return p;
}
Point operator++(Point& p, int){ // 友元函数后置自增运算符重载
Point tmp(p);
p._x++;
p._y++;
return tmp;
}
```
阅读全文