定义一个点类CPoint,定义一个线段长度。使用类的组合(对象成员)实现
时间: 2023-07-10 12:18:55 浏览: 105
好的,下面是C++的代码实现:
```cpp
class CPoint {
public:
CPoint(int x, int y) : m_x(x), m_y(y) {}
private:
int m_x;
int m_y;
};
class CLine {
public:
CLine(CPoint start, CPoint end) : m_start(start), m_end(end) {
// 计算线段长度
m_length = sqrt(pow(m_start.m_x - m_end.m_x, 2) + pow(m_start.m_y - m_end.m_y, 2));
}
private:
CPoint m_start;
CPoint m_end;
double m_length;
};
```
上面的代码中,我们定义了一个CPoint类表示二维平面上的一个点,然后定义了一个CLine类表示一条线段,其中包含了起点和终点两个CPoint对象成员,通过这两个成员可以计算出线段的长度。这就是类的组合,即一个类的成员变量是另一个类的对象。
相关问题
定义一个点类CPoint,定义一个线段类CLine,计算线段长度。使用类的组合(对象成员)实现
好的,下面是点类CPoint和线段类CLine的定义,以及如何计算线段长度的方法:
```c++
class CPoint {
public:
CPoint(double x = 0, double y = 0) : m_x(x), m_y(y) {}
double getX() const { return m_x; }
double getY() const { return m_y; }
private:
double m_x;
double m_y;
};
class CLine {
public:
CLine(const CPoint& start, const CPoint& end) : m_start(start), m_end(end) {}
double getLength() const {
double dx = m_start.getX() - m_end.getX();
double dy = m_start.getY() - m_end.getY();
return sqrt(dx * dx + dy * dy);
}
private:
CPoint m_start;
CPoint m_end;
};
```
在这个实现中,线段类CLine包含两个点CPoint作为成员变量,这种关系被称为对象组合。CLine类的getLength()方法计算线段的长度,使用了两个点的坐标差值和勾股定理。
通过这种方式,我们可以将不同的类组合在一起,实现更复杂的功能,这也是面向对象编程的一个重要特点。
定义一个点类CPoint,定义一个线段类Cline,计算线段长度。使用类的组合(对象成员)实现
好的,下面是我给你的 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() 方法。
阅读全文