• More Effective C++精简版(2)


    4.1
            两中转换函数: 单参数构造函数(single-argument constructors)和隐式类型转换运算符 都可能是危险的,此中切记不可转换用户自定义类型,即使是用explicit声明

            在多数情况下,显式转换函数的使用虽然不方便,但是函数被悄悄调用的情况不再会发生,这点损失是值得的。

     4.2
             increment的前缀形式有时叫做“增加然后取回”,后缀形式叫做“取回然后增加”

     
    4.3
           C++使用布尔表达式短路求值法(short-circuit evaluation)。一旦确定了布尔表达式的真假值,即使还有部分表达式没有被测试,布尔表达式也停止运算

            空指针调用strlen,结果不确定

    你不能重载下面的操作符:

    .              .*              ::             ?:

    new          delete        sizeof      typeid

    static_cast dynamic_cast const_cast reinterpret_cast

    你能重载:

    operator new        operator delete

    operator   new[]    operator delete[]

    +    -   *   /   %   ^     &   |     ~

    !    =   <   > +=   -=   *=   /=   %=

    ^= &= |= << >>   >>= <<= ==   !=

    <= >= && || ++   --    ,   ->* ->

    () []

    操作符重载的目的是使程序更容易阅读,书写和理解,而不是用你的知识去迷惑其他人。如果你没有一个好理由重载操作符,就不要重载 

     4.4
            如果你只想处理未被初始化的内存,你应该绕过newdelete操作符,而调用operator new 获得内存和operator delete释放内存给系统,这与在C中调用mallocfree等同。

            如果你用placement new在内存中建立对象, 应该显式调用对象的析构函数来解除构造函数的影响

  • 相关阅读:
    关于Linux联网的问题
    MapD的数据导出与扩容(利用现有的表)
    系统重启后,MapD报错Thrift的连接被拒绝
    关于Linux系统只读(Ubuntu16.4.1)
    javaBean的依赖注入中构造注入和依赖注入的区别
    Struts2开发中遇到的坑。。。
    通过配置文件设置定时任务,以及时间的选择
    微信小程序开发的movable开发的坑
    spring基础概念
    Hibernate的三种查询方式
  • 原文地址:https://www.cnblogs.com/ethan/p/673574.html
Copyright © 2020-2023  润新知