More Effective C++:2、操作符

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接: https://blog.csdn.net/qq_30534935/article/details/102539409

运算符重载 —— 你不得不喜欢它们!它们允许给予你的自定义类型有着和 C++ 内建类型完全相样的语法,更有甚者,它们允许你将强大的能量注入到运算符背后的函数体中,而这是在内建类型上从未听说过的。当然,你能够使得如同 “+” 和 “==” 这样的符号做任何你想做的事,这个事实意味着使用运算符重载你可能写出的程序完全无法理解。C++ 的老手知道如何驾驭运算符重载的威力而不至于滑落到 “不可理解” 的深渊。


遗憾的是,很容易导致滑落。单参数的构造函数和隐式类型转换操作符尤其棘手,因为它们会被调用在没有任何的源代码显示了这样的调用的地方。这会导致程序的行为难于理解。一个不同的问题发生在重载 “&&” 和 “||” 这样的运算符时,因为从内建类型到自定义类型的类型转换函数在语法上产生了一个微妙的变化,而这–点非常容易被忽视。最后,许多操作符通过标准的方式彼此的联系在一起,但重载操作符使得改变这种公认的联系成为可能。


在下面的条款中,我集中解释重载的运算符何时并且如何被调用,它们如何运作,它们应该如何彼此联系,以及如何获得这些方面的控制权。有了这一章的信息,你可以和专家一样重载(或不重载)一个运算符。



条款5:对定制的 “类型转换函数” 保持警觉



条款6:区别 increment/decrement 操作符的前置(prefix)和后置(postfix)形式



条款7:千万不要重载 &&,|| 和 , 操作符



条款8:了解各种不同意义的 new 和 delete

猜你喜欢

转载自blog.csdn.net/qq_30534935/article/details/102539409
今日推荐