c++类

您所在的位置:网站首页 二维向量计算 c++类

c++类

2023-07-17 11:42| 来源: 网络整理| 查看: 265

如有兴趣了解更多请关注我的个人博客https://07xiaohei.com/

经典例子:

我们以两个类,二维向量vector2和二维新式向量newvector2来说明各种运算符的重载。

vector全部使用友元函数重载,newvector全部使用成员函数重载,两个都可以时同时重载。

其成员为x和y,主要操作为x(如自增自减等等),次要操作为y。

(一)重载++和–:

++和–的重载分为前置和后置两种情况,另外,虽然修改了类对象的状态,但是可以使用友元函数传入引用来实现++和–的类外重载。

前置++或–的成员函数不需要传入参数,在代码块内不需要拷贝临时变量返回,只通过this指针进行自增/自减。

后置++或–需要传入一个int类型的参数,可以不指定名称,因为一般在代码块内部不会使用它,这个参数只是为了占位置,用于和前置++/–运算符的区别。在代码块内需要先拷贝一个临时变量返回。只通过this指针自增/自减。

前置++或–的友元函数需要传入一个类对象的引用,不需要拷贝临时变量返回,直接对传入参数进行操作(因为引用可以对其有效修改)。

后置++或–的友元函数需要传入两个参数,一个是类对象的引用,且为左操作数,一个是占位的int类型参数(和上面逻辑相同),需要先拷贝临时变量返回,直接对传入参数进行操作。

详细代码如下:

//vector2.h #include using namespace std; class vector2 { friend vector2 operator ++(vector2& v); //前置++重载友元 friend vector2 operator ++(vector2& v, int); //后置++重载友元 friend vector2 operator --(vector2& v); //前置--重载友元 friend vector2 operator --(vector2& v, int); //后置--重载友元 private: double x; double y; public: vector2(double vx = 0, double vy = 0); vector2(const vector2 &v); void print(); ~vector2(); }; class newvector2 { private: double x; double y; public: newvector2(double vx = 0, double vy = 0); newvector2(const newvector2& v); newvector2 operator++(); //前置++重载成员 newvector2 operator++(int vx); //后置++重载成员 newvector2 operator--(); //前置--重载成员 newvector2 operator--(int vy); //后置--重载成员 void print(); ~newvector2(); }; //vector2.cpp #include"vector2.h" #include using namespace std; vector2::vector2(double vx,double vy):x(vx),y(vy) { cout y = v.y; cout


【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3