编程学习biancheng.45soft.com 本站提供了各种在线教程和资料,供大家学习与参考.
编程学习
当前位置: 主页 > C++ > 重载操作符与转换 >

C++ 重载操作符与转换


第五章介绍过,C++ 定义了许多内置类型间的操作符和自动转换。使用这些设施程序员能够编写丰富的混合类型表达式。


C++ 允许我们重定义操作符用于类类型对象时的含义。如果需要,可以像内置转换那样使用类类型转换,将一个类型的对象隐式转换到另一类型。


通过操作符重载,程序员能够针对类类型的操作数定义不同的操作符版本。第十三章阐述了赋值操作符的重要性并介绍了怎样定义赋值操作符。我们第一次使用重载操作符是在第一章,那里程序用移位操作符(>> 和 <<)进行输入输出,用加号操作符(+)将两个 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();



C++
C++ 重载操作符与转换