11.1 警告和确信
对于运算符重载,人们容易变得过于热心。它是一个娱乐玩具。注意,它仅仅是一个语法修饰,是另外一种调用函数的方法而已。用这种眼光看,没有理由重载一个运算符,除非它会使包含我们的类的代码变得更易写,尤其是更易读。(记住,读代码的情况更多)如果不是这种情况,就不必麻烦去重载运算符。对于运算符重载,另外一个通常的反映是恐慌:“突然,C运算符不再有熟悉的意思。‘所有的东西都改变了,我的所有C代码将做不同的事情!’”但这不是事实。所有用于仅包含内部数据类型的表达式的运算符是不可能被改变的。
我们永远不能重载下面的运算符使执行的行为不同。1 << 4;
或者重载运算符使得下面的表达式有意义。1.414 << 2;
仅仅是包含用户自定义类型的表达式可以有重载的运算符。如果你想深入了解这一点,看看这个详解C++编程中的单目运算符重载与双目运算符重载,那里有更详细的解释。
11.2 语法
定义一个重载运算符就像定义一个函数,只是该函数的名字是 operator @
,这里 @
代表运算符。函数参数表中参数的个数取决于两个因素:1) 运算符是一元的(一个参数)还是二元的(两个参数)。2) 运算符被定义为全局函数(对于一元是一个参数,对于二元是两个参数)还是成员函数(对于一元没有参数,对于二元是一个参数——对象变为左侧参数)。这里有一个很小的类来显示运算符重载语法。
假如你想重载加法运算符,可以参考C++ 运算符重载重载中的示例代码。这些例子将帮助你快速上手,理解如何在实际编程中应用运算符重载。
总之,运算符重载确实可以让代码更优雅,但也别让它成为你代码的绊脚石。适度地使用它,让你的代码既有趣又易于理解,这才是王道!你是否已经迫不及待地想要尝试一下?
暂无评论