本来是可以一讲就把重载全部讲完的,因为昨天太晚了,很困,所以就只讲了重载输入输出操作符,今天概念性的东西就不说了,直接看上一讲的《浅谈C++类(8)--重载输入输出操作符》吧,今天就补充一下其他的操作符的重载,其实都差不多,不过我感觉自己实际输入调试过后和没有调试只懂概念有个印象是完全不一样的。我一次把除了下标和成员访问操作符以外的操作符都写在下面这个例子里面,你自己分析和调试吧,我在主程序里面只调试了一部分。
例9.0:
#include <string>
#include <iostream>
using namespace std;
class Fruit //定义一个类,名字叫Fruit
{
double price; //定义一个price成员表示价格
double weight; //定义一个weight成员表示重量
string colour; //定义一个colour成员表示颜色
string name; //定义一个name成员表示名字
double conValue; //定义一个conValue成员表示总价值
public:
friend istream& operator>>(istream&,Fruit&); //重载输入操作符
friend ostream& operator<<(ostream&,const Fruit&); //重载输出操作符
Fruit& operator+=(const Fruit &orig) //重载复合加法操作符,行为不知道怎么定义好,所以比较奇怪
{
if(name != orig.name)
{
name = name + " mix " + orig.name;
}
if(colour != orig.colour)
{
colour = colour + " mix " + orig.colour;
}
weight += orig.weight;
conValue += orig.conValue;
price = conValue / weight;
return *this;
}
friend Fruit operator+(const Fruit &lf,const Fruit &rf); //重载加法操作符,必须要用友元,因为有两个操作数
Fruit& operator=(Fruit &orig) //重载赋值操作符
{
name = orig.name;
colour = orig.colour;
price = orig.price;
weight = orig.weight;
conValue = orig.conValue;
return *this;
}
bool operator==(const Fruit &orig)//重载相等操作符
{
return conValue == orig.conValue;
}
bool operator!=(const Fruit &orig)//重载不等操作符
{
return !(*this == orig);
}
bool operator<(const Fruit &orig) //重载小于操作符
{
return conValue < orig.conValue;
}
bool operator>(const Fruit &orig) //重载大于操作符
{
return conValue > orig.conValue;
}
bool operator<=(const Fruit &orig) //重载小于等于操作符
{
return *this<orig
版权与免责声明
1、本站所发布的文章仅供技术交流参考,本站不主张将其做为决策的依据,浏览者可自愿选择采信与否,本站不对因采信这些信息所产生的任何问题负责。
2、本站部分文章来源于网络,其版权为原权利人所有。由于来源之故,有的文章未能获得作者姓名,署“未知”或“佚名”。对于这些文章,有知悉作者姓名的请告知本站,以便及时署名。如果作者要求删除,我们将予以删除。除此之外本站不再承担其它责任。
3、本站部分文章来源于本站原创,本站拥有所有权利。
4、如对本站发布的信息有异议,请联系我们,经本站确认后,将在三个工作日内做出修改或删除处理。
请参阅权责声明!