引自免费微信小程序:皆我百晓生
// 定义Point类
class Point {
protected:
double x;
double y;
public:
// 带默认参数的构造函数
Point(double _x = 0.0, double _y = 0.0) : x(_x), y(_y) {}
// 拷贝构造函数
Point(const Point &point) : x(point.x), y(point.y) {}
// 设置横坐标
void setX(double newX) { x = newX; }
// 设置纵坐标
void setY(double newY) { y = newY; }
// 获取横坐标 (const成员函数)
double getX() const { return x; }
// 获取纵坐标 (const成员函数)
double getY() const { return y; }
// 打印点的坐标信息 (const成员函数)
void printCoordinates() const {
std::cout << "(" << x << ", " << y << ")" << std::endl;
}
};
// 计算两个Point对象的距离,友元函数
double pdistance(const Point &p1, const Point &p2) {
double dx = p1.getX() - p2.getX();
double dy = p1.getY() - p2.getY();
return std::sqrt(dx * dx + dy * dy);
}
// 计算两个Point对象的中点,友元函数
Point midpoint(const Point &p1, const Point &p2) {
double midX = (p1.getX() + p2.getX()) / 2.0;
double midY = (p1.getY() + p2.getY()) / 2.0;
return Point(midX, midY);
}
这段代码定义了一个名为Point
的C++类,它包含两个保护数据成员(横坐标x
和纵坐标y
)。类中有带默认参数的构造函数、拷贝构造函数、用于设置和获取横纵坐标的成员函数以及打印坐标信息的成员函数。此外,我们还定义了两个友元函数pdistance
和midpoint
,它们可以访问Point
类的保护数据成员。
要使用这个类,你可以这样创建和操作点:
int main() {
Point p1(3.0, 4.0); // 创建一个点 (3, 4)
Point p2(7.0, 9.0); // 创建另一个点 (7, 9)
p1.printCoordinates(); // 输出: (3, 4)
p2.printCoordinates(); // 输出: (7, 9)
double distance = pdistance(p1, p2); // 计算两点之间的距离
std::cout << "Distance between points: " << distance << std::endl;
Point mid = midpoint(p1, p2); // 计算两点的中点
mid.printCoordinates(); // 输出中点坐标
return 0;
}
这段示例代码展示了如何创建Point
对象,并使用定义的成员函数和友元函数进行操作。