第11章 使用类——再谈重载:矢量类(一)

这篇博客介绍了基于《C++ Primer Plus》一书整理的二维矢量类的设计,通过类来表示矢量并重载运算符。文章通过模拟随机漫步问题展示了如何使用自定义的Vector类,探讨了如何利用矢量的x和y分量描述位置变化,并计算平均每步的向外距离。
摘要由CSDN通过智能技术生成

本文章是作者根据史蒂芬·普拉达所著的《C++ Primer Plus》而整理出的读书笔记,如果您在浏览过程中发现了什么错误,烦请告知。另外,此书由浅入深,非常适合有C语言基础的人学习,感兴趣的朋友可以自行阅读此书籍。

矢量,是工程和物理中使用的一个术语,它是一个有大小和方向的量。例如,推东西时,推的效果将取决于推力的大小和推的方向。
同时,矢量也支持相加,首先,画一个矢量,然后从第一个矢量的尾部开始画第二个矢量。最后从第一个矢量的开始处向第二个矢量的结尾处画一个矢量。第三个矢量表示前两个矢量的和。注意,两个矢量之和的长度可能小于它们的长度之和。

显然无法使用一个数来表示矢量,因此应创建一个类来表示矢量。其次,矢量与普通数学运算有相似之处,因此应重载运算符。

出于简化的目的,本节将实现一个二维矢量(如屏幕位移)。描述二维矢量只需要两个数,但可以选择到底使用哪两个数:

  • 可以用大小(长度)和方向(角度)描述矢量;
  • 可以用分量x和y表示矢量。

两个分量分别是水平矢量(x分量)和垂直矢量(y分量),将其相加可以得到最终的矢量。例如,可以这样描述点的运动:向右移动30个单位,再向上移动40个单位。这将把该点沿与水平方向呈53.1度的方向移动50个单位(没错,就是勾股定理),因此,水平分量为30个单位、垂直分量为40个单位的矢量,与长度为50个单位、方向为53.1度的矢量相同。

因此在设计这个类时,当用户修改了矢量的一种表示时,对象将自动更新另一种表示。

以下是类声明的代码:

//vect.hpp
#ifndef _VECTOR_H_
#define _VECTOR_H_
#include <iostream>
namespace VECTOR
{
  class Vector
  {
  public:
    enum Mode{RECT, POL};

  private:
    double x;
    double y;
    double mag;
    double ang;
    Mode mode;
    void set_mag();
    void set_ang();
    void set_x();
    void set_y();

  public:
    Vector();
    Vector(double n1, double n2, Mode form = RECT);
    void reset(double n1, double n2, Mode form = RECT);
    ~Vector();
    double 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值