bool operator==( point& f) 利用成员函数吗
时间: 2023-09-15 11:02:31 浏览: 45
bool operator==( point p1, point p2)
{
if (p1.x == p2.x && p1.y == p2.y && p1.z == p2.z)
{
return true;
}
else
{
return false;
}
}
这是一个重载的"=="运算符函数,用于比较两个point类型的对象是否相等。在该函数中,先判断两个对象的x、y和z值是否都相等,如果相等则返回true,表示两个点相等;如果有任何一个值不相等,则返回false,表示两个点不相等。
相关问题
设计一个点类Point表示二维平面点的集合,数据成员由点坐标值表示,其结构如下: 三个重载构造函数: 一个是无参数的构造函数; 一个是带坐标值参数的构造函数,实现对数据成员的初始化; 一个是copy构造函数,实现用一个对象初始化本对象; 两个重载成员函数: void offert(int , int ); 实现点的偏移,参数是偏移量; void offert(Point &); 实现点的偏移,参数Point类对象是偏移量; 8个运算符重载函数: bool operator == (Point &); 判断两个点对象是否相等; bool operator != (Point &); 判断两个点对象是否不相等; void operator += (Point &); 将两个点对象相加; void operator −= (Point &); 将两个点对象相减; void operator ++ (); 将当前对象自增1(前置); void operator −− (); 将当前对象自减1(前置); Point operator ++ (int k); 将当前对象自增1(后置); Point operator −− (int k); 将当前对象自减1(后置); friend Point& operator + (Point &, Point &); 将两个点对象相加; friend Point& operator − (Point &, Point &); 将两个点对象相减; 两个成员函数提供实例对象对私有数据的访问: int GetX(); int GetY(); 公有成员函数void Display();输出对象的数据成员;
根据题目要求,可以设计如下的 Point 类:
```cpp
class Point {
private:
int x; // 横坐标
int y; // 纵坐标
public:
Point(); // 无参数构造函数
Point(int xx, int yy); // 带参数构造函数
Point(const Point& p); // copy构造函数
void offert(int dx, int dy); // 点的偏移,参数是偏移量
void offert(Point& p); // 点的偏移,参数Point类对象是偏移量
bool operator==(Point& p); // 判断两个点对象是否相等
bool operator!=(Point& p); // 判断两个点对象是否不相等
void operator+=(Point& p); // 将两个点对象相加
void operator-=(Point& p); // 将两个点对象相减
void operator++(); // 将当前对象自增1(前置)
void operator--(); // 将当前对象自减1(前置)
Point operator++(int k); // 将当前对象自增1(后置)
Point operator--(int k); // 将当前对象自减1(后置)
friend Point& operator+(Point& p1, Point& p2); // 将两个点对象相加
friend Point& operator-(Point& p1, Point& p2); // 将两个点对象相减
int GetX(); // 获取横坐标
int GetY(); // 获取纵坐标
void Display(); // 输出对象的数据成员
};
```
其中,各个成员函数的实现如下:
```cpp
Point::Point() {
x = 0;
y = 0;
}
Point::Point(int xx, int yy) {
x = xx;
y = yy;
}
Point::Point(const Point& p) {
x = p.x;
y = p.y;
}
void Point::offert(int dx, int dy) {
x += dx;
y += dy;
}
void Point::offert(Point& p) {
x += p.x;
y += p.y;
}
bool Point::operator==(Point& p) {
return x == p.x && y == p.y;
}
bool Point::operator!=(Point& p) {
return !(*this == p);
}
void Point::operator+=(Point& p) {
x += p.x;
y += p.y;
}
void Point::operator-=(Point& p) {
x -= p.x;
y -= p.y;
}
void Point::operator++() {
x++;
y++;
}
void Point::operator--() {
x--;
y--;
}
Point Point::operator++(int k) {
Point tmp(*this);
x++;
y++;
return tmp;
}
Point Point::operator--(int k) {
Point tmp(*this);
x--;
y--;
return tmp;
}
Point& operator+(Point& p1, Point& p2) {
Point tmp(p1.x + p2.x, p1.y + p2.y);
return tmp;
}
Point& operator-(Point& p1, Point& p2) {
Point tmp(p1.x - p2.x, p1.y - p2.y);
return tmp;
}
int Point::GetX() {
return x;
}
int Point::GetY() {
return y;
}
void Point::Display() {
cout << "(" << x << ", " << y << ")" << endl;
}
```
#include <iostream> using namespace std; class Point { private: int x; // 横坐标 int y; // 纵坐标 public: Point() { x = 0; y = 0; } Point(int xx, int yy) { x = xx; y = yy; } Point(const Point& p) { x = p.x; y = p.y; } void offert(int dx, int dy) { x += dx; y += dy; } void offert(Point& p) { x += p.x; y += p.y; } bool operator==(Point& p) { return x == p.x && y == p.y; } bool operator!=(Point& p) { return !(*this == p); } void operator+=(Point& p) { x += p.x; y += p.y; } void operator-=(Point& p) { x -= p.x; y -= p.y; } void operator++() { x++; y++; } void operator--() { x--; y--; } Point operator++(int k) { Point tmp(*this); x++; y++; return tmp; } Point operator--(int k) { Point tmp(*this); x--; y--; return tmp; } friend Point& operator+(Point& p1, Point& p2) { Point tmp(p1.x + p2.x, p1.y + p2.y); return tmp; } friend Point& operator-(Point& p1, Point& p2) { Point tmp(p1.x - p2.x, p1.y - p2.y); return tmp; } int GetX() { return x; } int GetY() { return y; } void Display() { cout << "(" << x << ", " << y << ")" << endl; } };
这是一个 C++ 的程序,定义了一个 Point 类,表示一个二维平面上的点。这个类有两个私有成员变量 x 和 y 分别表示横坐标和纵坐标,以及多个成员函数和运算符重载函数,如构造函数、坐标偏移函数、相等判断运算符、不等判断运算符、加法运算符、减法运算符等等。此外,这个类还有一些友元函数,用来实现 Point 类对象的加法、减法运算。