重载操作符的作用:
通过操作符重载,程序员能够针对类类型的操作数定义不同的操作符版本。程序用移位操作符(>> 和 <<)进行输入输出,用加号操作符(+)将两个 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** 以提供求幂运算是合法的。
- 重载操作符必须有一个类类型操作数
时间: 2024-10-22 11:18:41