zoukankan      html  css  js  c++  java
  • 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在内存中建立对象, 应该显式调用对象的析构函数来解除构造函数的影响

  • 相关阅读:
    day5
    \_\_setitem\_\_和\_\_getitem和\_\_delitem__
    描述符(\_\_get\_\_和\_\_set\_\_和\_\_delete\_\_)
    \_\_getattribute\_\_
    面向对象进阶小结
    property装饰器
    super()方法详解
    菱形继承问题
    类的派生
    类的继承
  • 原文地址:https://www.cnblogs.com/ethan/p/673574.html
Copyright © 2011-2022 走看看