面向对象C++编写平面点类,构造,运算符重载,main
时间: 2023-09-05 18:05:27 浏览: 156
### 回答1:
好的,以下是一个面向对象C++实现的平面点类:
```
#include <iostream>
class Point {
public:
int x, y;
Point(int x = 0, int y = 0) : x(x), y(y) {}
friend Point operator+(const Point &a, const Point &b) {
return Point(a.x + b.x, a.y + b.y);
}
friend std::ostream &operator<<(std::ostream &os, const Point &p) {
os << "(" << p.x << ", " << p.y << ")";
return os;
}
};
int main() {
Point a(1, 2), b(3, 4), c;
c = a + b;
std::cout << c << std::endl;
return 0;
}
```
输出:
```
(4, 6)
```
以上代码实现了平面点类的构造,运算符重载和main函数。
### 回答2:
平面点类的设计如下:
```c
#include <iostream>
// 定义平面点类
class Point {
private:
double x; // x坐标
double y; // y坐标
public:
// 默认构造函数
Point() {
this->x = 0;
this->y = 0;
}
// 带参数构造函数
Point(double x, double y) {
this->x = x;
this->y = y;
}
// 获取x坐标
double getX() {
return x;
}
// 设置x坐标
void setX(double x) {
this->x = x;
}
// 获取y坐标
double getY() {
return y;
}
// 设置y坐标
void setY(double y) {
this->y = y;
}
// 运算符重载:重载+运算符,实现两个平面点的向量相加
Point operator+(const Point& p) {
Point newPoint;
newPoint.setX(this->x + p.x);
newPoint.setY(this->y + p.y);
return newPoint;
}
// 运算符重载:重载-运算符,实现两个平面点的向量相减
Point operator-(const Point& p) {
Point newPoint;
newPoint.setX(this->x - p.x);
newPoint.setY(this->y - p.y);
return newPoint;
}
};
// 测试代码
int main() {
// 创建两个平面点对象
Point p1(2.0, 3.0);
Point p2(1.0, 5.0);
// 计算两个向量的和与差
Point sum = p1 + p2;
Point difference = p1 - p2;
// 输出结果
std::cout << "Sum: (" << sum.getX() << ", " << sum.getY() << ")" << std::endl;
std::cout << "Difference: (" << difference.getX() << ", " << difference.getY() << ")" << std::endl;
return 0;
}
```
以上代码为面向对象C++编写的例子,可以实现平面点类的构造和运算符重载,以及一个简单的main函数用于测试。其中,Point类包含了x坐标和y坐标的成员变量,并且提供了获取和设置这两个坐标的成员函数。运算符重载部分重载了+和-运算符,实现了两个平面点的向量相加和相减。最后,在main函数中创建两个平面点对象,进行相加和相减操作,并输出结果。
### 回答3:
面向对象C++编写平面点类需要实现构造函数、运算符重载以及在main函数中的使用。
首先需要定义平面点类Point,其中包含两个私有数据成员x和y分别表示点的横坐标和纵坐标。构造函数可以使用参数列表将x和y的值初始化,并通过成员初始化列表进行赋值。
接下来需要实现运算符重载,包括重载+、-以及<<和>>。重载+和-运算符可以进行点的加法和减法运算,其中点的加法运算可以通过将对应坐标进行相加。重载<<和>>运算符可以实现在输入输出流中对点对象的输入和输出。
在main函数中,我们可以创建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+(const Point& p) const {
return Point(x + p.x, y + p.y);
}
Point operator-(const Point& p) const {
return Point(x - p.x, y - p.y);
}
friend ostream& operator<<(ostream& os, const Point& p) {
os << "(" << p.x << "," << p.y << ")";
return os;
}
friend istream& operator>>(istream& is, Point& p) {
is >> p.x >> p.y;
return is;
}
};
int main() {
Point p1(1, 2);
Point p2(3, 4);
Point p3 = p1 + p2;
Point p4 = p2 - p1;
cout << "p1 + p2 = " << p3 << endl;
cout << "p2 - p1 = " << p4 << endl;
return 0;
}
```
以上代码实现了面向对象C++编写平面点类,包括构造、运算符重载以及在main函数中的使用。在main函数中创建了两个点对象p1和p2,并进行了加法和减法运算,最后输出运算结果。
阅读全文