zoukankan      html  css  js  c++  java
  • More Effective C++ 条款7 千万不要重载&&,||和,操作符

    1. 内置的&&和||操作符有"短路求值"的特性。对于&&如果第一个操作数为真,那么&&即返回为真,不再对第二个操作数进行求值,||则相反,利用这个特性可以写出下面的代码:

    char *p;
    ...
    if(p>0&&strlen(p)>10)
    ...
    View Code

    一旦进行重载,&&和||的左右操作数就是两个无分前后的参数而已,也就是说短路求值的特性没有了当函数被调用时,所有参数都被求值并传入而C++没有规定个参数的求职顺序,之前的代码就不能用了。

    2. 对于内置的逗号操作符,从左向右对各个操作数求值,最后返回最右边的操作数(可以多个逗号)连用

    一旦进行重载,从左至右依次求值的特性也会消失(就算重载为成员函数也是一样)。

    3. 不能被重载的操作符:

        .                       .*                       ::                        ?:    

        new                  delete                 sizeof                   typeid

        static_cast         dynamic_cast      const_cast            reinterpret_cast

  • 相关阅读:
    mysql 约束条件介绍
    mysql 约束条件目录
    mysql 日期类型
    mysql float 浮点型
    mysql int 整数类型 解释显示宽度 和 存储宽度
    mysql 整数类型 数值类型 tinyint
    【洛谷P4096】Eden 的博弈树
    【GMOJ6824】英雄联盟
    【GMOJ6826】隔膜
    【POJ 2420】A Star not a Tree?
  • 原文地址:https://www.cnblogs.com/reasno/p/4601460.html
Copyright © 2011-2022 走看看