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

重载操作符与转换(上)

时间:2016-02-26 18:52:02      阅读:185      评论:0      收藏:0      [点我收藏+]

标签:

重载操作符的作用:

通过操作符重载,程序员能够针对类类型的操作数定义不同的操作符版本。程序用移位操作符(>><<)进行输入输出,用加号操作符(+)将两个 Sales_items 相加。

通过操作符重载,可以定义大多数操作符,使它们用于类类型对象。明智地使用操作符重载可以使类类型的使用像内置类型一样直观。标准库为容器类定义了几个重载操作符。这些容器类定义了下标操作符以访问数据元素,定义了 *-> 对容器迭代器解引用。这些标准库的类型具有相同的操作符,使用它们就像使用内置数组和指针一样。允许程序使用表达式而不是命名函数,可以使编写和阅读程序容易得多。

cout << "The sum of " << v1 << " and " << v2
               << " is " << v1 + v2 << endl;

和以下更为冗长的代码相比较就能够看到。如果 IO 使用命名函数,类似下面的代码将无法避免:

// hypothetical expression if IO used named functions
     cout.print("The sum of ").print(v1).
            print(" and ").print(v2).print(" is ").
            print(v1 + v2).print("\n").flush();

重载操作符是具有特殊名称的函数:保留字 operator 后接需定义的操作符号。像任意其他函数一样,重载操作符具有返回类型和形参表,如下语句:

Sales_item operator+(const Sales_item&, const Sales_item&);

声明了加号操作符,可用于将两个 Sales_item 对象“相加”并获得一个 Sales_item 对象的副本。除了函数调用操作符之外,重载操作符的形参数目(包括成员函数的隐式 this 指针)与操作符的操作数数目相同。函数调用操作符可以接受任意数目的操作数。

可重载的操作符:

技术分享

不可重载的操作符:

技术分享

通过连接其他合法符号可以创建新的操作符。例如,定义一个 operator** 以提供求幂运算是合法的。

  • 重载操作符必须有一个类类型操作数

 

重载操作符与转换(上)

标签:

原文地址:http://www.cnblogs.com/predator-wang/p/5221156.html

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