定义一个点类CPoint,定义一个线段类Cline,计算线段长度。使用类的组合(对象成员)实现
时间: 2024-02-21 19:57:39 浏览: 64
好的,下面是我给你的 C++ 代码实现。
```cpp
#include <iostream>
#include <cmath>
using namespace std;
class CPoint {
public:
CPoint(double x = 0.0, double y = 0.0) : m_x(x), m_y(y) {}
private:
double m_x, m_y;
friend class CLine; // CLine是CPoint的友元类,可以访问CPoint的私有成员
};
class CLine {
public:
CLine(const CPoint& p1, const CPoint& p2) : m_p1(p1), m_p2(p2) {}
double length() {
double dx = m_p1.m_x - m_p2.m_x;
double dy = m_p1.m_y - m_p2.m_y;
return sqrt(dx * dx + dy * dy);
}
private:
CPoint m_p1, m_p2;
};
int main() {
CPoint p1(1.0, 1.0);
CPoint p2(3.0, 4.0);
CLine line(p1, p2);
cout << "The length of the line is " << line.length() << endl;
return 0;
}
```
在这个程序中,我们定义了一个 CPoint 类表示一个点,有两个私有数据成员 m_x 和 m_y,以及一个构造函数。然后我们定义了一个 CLine 类表示一条线段,有两个 CPoint 类型的对象成员 m_p1 和 m_p2,以及一个计算线段长度的方法 length()。CLine 类中使用了 CPoint 类,所以我们将 CPoint 类声明为 CLine 类的友元类,这样 CLine 类就可以访问 CPoint 类的私有成员 m_x 和 m_y 了。
在 main() 函数中,我们创建了两个 CPoint 类型的对象 p1 和 p2,然后用它们构造了一个 CLine 类型的对象 line。最后输出线段的长度,即调用 line.length() 方法。