码迷,mamicode.com
首页 > 其他好文 > 详细

运算符重载

时间:2016-01-12 21:24:16      阅读:150      评论:0      收藏:0      [点我收藏+]

标签:

C++中预定义的运算符的操作对象只能是基本数据类型。但实际上,对于许多用户自定义类型(例如类),也需要类似的运算操作。这时就必须在C++中重新定义这些运算符,赋予已有运算符新的功能,使它能够用于特定类型执行特定的操作。运算符重载的实质是函数重载,它提供了C++的可扩展性,也是C++最吸引人的特性之一。 

c++中允许在类和枚举对象上定义几乎所有的c++运算符,这通常成为运算符重载(operator overloading),这种机制用于给用户自定义类型提供习惯的符号表示方法。

运算符重载是通过创建运算符函数实现的,运算符函数定义了重载的运算符将要进行的操作。运算符函数的定义与其他函数的定义类似,惟一的区别是运算符函数的函数名是由关键字operator和其后要重载的运算符符号构成的。运算符函数定义的一般格式如下:

技术分享<返回类型说明符> operator <运算符符号>(<参数表>)
技术分享{
技术分享
技术分享     <函数体>
技术分享
技术分享}

例子1:Month operator++(Month&m){//为什么这个传递的是引用???

m = (m = dec)?jan:Month(m+1);

return m;

}

例子2:vector<string>month_tbl;

ostream&operator<<(ostream&os,Month m){//这个传递的是值呢?

return os<<month_tbl[m];

};

规则:

1.不能定义新的运算符,c++中原来不包含的,如** ¥¥

2.一个重载运算符必须作用于至少一个用户自定义的类型

比如:int operator+(int,int)//error,两个内置类型不行

           Vector operator+(const Vector&,const Vector&)//ok

      Vector operator+=(const Vector&,int)//ok

 

运算符重载

标签:

原文地址:http://www.cnblogs.com/xyy-comeon/p/5125427.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!