2.操作符
条款05:对定制的类型转换函数保持警觉
这个条款主要说的是,需要注意自动类型转换函数。这可能给你的程序带来意想不到的bug
条款06:区别increment/decrement操作符的前置和后置形式
首先需要知道前置和后置形式的区别,前置操作不会产生新的对象,但是后置操作会产生。所以大多数情况来说,前置操作效率更高。
然后需要注意的是,重载或者自己设置一个类的前置和后置加减操作的时候。需要注意将返回值设置为const,因为c++是不支持这种这种语法的 i++++。所以返回值要设置为const
条款07:千万不要重载&&,||和,操作符
c++能重载很多操作符,但是还是有很多操作符不能被处理。下面列出不能被重载的操作符
. .* :: ?: new delete sizeof typeid static_cast dynamic_cast const_cast reinterpret_cast
那么条款说的这三个操作符有什么特殊性质呢?
&&和||都有个性质,大多数程序员应该都知道,就是短路特性。那么再想一下,如果要重载这个操作符,这种性质能不能体现呢?很显然,不能体现,操作符两遍的参数被计算的时间应该没有先后顺序。加上编译器的优化,很多东西不能保证
,操作符很多人可能不是太明白,这里简单说下他的性质。逗号操作符会先计算逗号左边的表达式,然后是右边,最后的他返回值是右边表达式的结果。
上面3个不建议被重载的操作符都是有先后顺序特性的,所以建议大家不要重载
条款08:了解各种不同意义的new和delete
这个条款其实和 effective c++ 中最后一个模块内容重合,所以可以直接看这个链接 8.定制new和delete操作符
Last updated
Was this helpful?