C++运算符重载

来源:互联网 发布:mac版qq怎么远程 编辑:程序博客网 时间:2024/05/04 12:35

       c++的一大特性就是重载(overload),通过重载可以把功能相似的几个函数合为一个,使得程序更加简洁、高效。在c++中不止函数可以重载,运算符也可以重载。由于一般数据类型间的运算符没有重载的必要,所以运算符重载主要是面向对象之间的。

       运算符的重载可以说是一个比较实用而且灵活的方法,掌握了运算符重载的方法,对于以后一些复杂的问题的解决是有帮助的,本篇将利用对Circle对象的排序的方法对重载进行分析。

#pragma onceclass Circle{public:Circle(void);Circle(double radius);~Circle(void);double getRadius();void setRadius(double radius);double getArea();bool operator == (Circle &c );   bool operator != (Circle &c);bool operator< (const Circle &c1);bool operator <= (Circle &c);bool operator > (Circle &c);bool operator>= (Circle &c);private:double radius;};

#include "Circle.h"Circle::Circle(void){radius = 0;}Circle::Circle(double radius){this->radius = radius;}double Circle::getRadius(){return radius;}void Circle::setRadius(double radius){this->radius = radius;}double Circle::getArea(){return 3.14*radius*radius;}bool Circle::operator== (Circle &c ){return this->radius<c.radius;}bool Circle::operator != (Circle &c){return this->radius<c.radius;}bool Circle::operator< (const Circle &c ) {return this->radius<c.radius;}bool Circle::operator <= (Circle &c){return this->radius<c.radius;}bool Circle::operator > (Circle &c){return this->radius<c.radius;}bool Circle::operator>= (Circle &c){return this->radius<c.radius;}Circle::~Circle(void){}

通过上述代码,在对圆的半径进行排序时即可简单的利用<、>、<=、>=、==对实例排序。

0 0