C++入门:面向对象的类与数据结构——向量示例

需积分: 10 2 下载量 49 浏览量 更新于2024-07-21 收藏 503KB PDF 举报
在C++引论第六课中,我们深入探讨了面向对象编程的核心概念——类和数据结构,特别是通过实例化用户自定义数据类型来更好地理解和应用。课程的重点围绕着如何设计和实现一个代表几何向量的数据结构。 首先,几何向量在几何学中被定义为由两个点组成:起点和终点。每个点都有自己的x和y坐标。例如,我们可以用以下形式表示一个二维向量: ```cpp class GeometricVector { public: double xStart; double yStart; double xEnd; double yEnd; }; // 定义起点和终点 GeometricVector start = {0.4, 0.8}; GeometricVector end = {0.9, 1.5}; ``` 传统的表示方法可能涉及到四个double变量(start_x, start_y, end_x, end_y),这样在传递和操作这些向量时,需要同时处理这四个值。然而,这种做法并不高效,也不易于维护。 为了简化操作,可以创建一个名为`printVector`的函数,接收向量的各个坐标作为参数,如下面的`main`函数所示: ```cpp void printVector(double x0, double x1, double y0, double y1) { cout << "(" << x0 << "," << y0 << ") -> (" << x1 << "," << y1 << ")" << endl; } int main() { double xStart = 1.2; double xEnd = 2.0; double yStart = 0.4; double yEnd = 1.6; // 调用函数打印向量 printVector(xStart, xEnd, yStart, yEnd); // 输出:(1.2, 0.4) -> (2.0, 1.6) } ``` 进一步,我们可以创建一个名为`offsetVector`的函数,用于对向量进行偏移操作,它接受向量的坐标引用以及偏移量,这样可以直接修改原向量的值,而无需返回新的对象: ```cpp void offsetVector(double& x0, double& x1, double& y0, double& y1, double offsetX, double offsetY) { x0 += offsetX; x1 += offsetX; y0 += offsetY; y1 += offsetY; } ``` 这样,当我们需要对向量进行平移或其他基于偏移的操作时,只需调用`offsetVector`函数即可,代码可读性和效率都得到了提升。 总结来说,C++引论第六课强调了类和数据结构在抽象几何向量这一具体场景中的应用,展示了如何通过用户定义的数据类型(如`GeometricVector`)来组织和操作数据,以及如何利用函数参数和引用优化代码的性能。通过这样的讲解,学习者能够更好地理解面向对象编程的封装和内聚性原则,并将其应用于实际问题解决中。