本文是C++ primer plus 6一书中Chapter 11里的实例,用类实现了物理上常用的二维矢量,分别体现了其直角坐标表示和极坐标表示,并重载了+,-,*,<< 运算符。并用一个随机漫步的小例子展示了这个二维矢量的作用。具体看代码:
头文件vector.h
#ifndef VECTOR_H_
#define VECTOR_H_
#include <iostream>
namespace VECTOR
{
class Vector
{
public:
enum Mode { RECT, POL }; //直角坐标和极坐标2种模式
private:
double x;
double y;
double mag;
double ang;
Mode mode;
void set_x();
void set_y();
void set_mag();
void set_ang();
public:
Vector();
Vector(double n1, double n2, Mode form = RECT); //mode决定n1,n2值的含义,默认是直角坐标
~Vector();
void reset(double n1, double n2, Mode form = RECT);
double xval() const { return x; }
double yval() const { return y; }
double magval() const { return mag; }
double angval() const { return ang; }
void polar_mode(); //设置模式
void rect_mode();
Vector operator+(const Vector & b) const;
Vector operator-(const Vector & b) const;
Vector