C++11新特性

  • auto

  • decltype :求表达式的类型

  • 智能指针 #include <memory>

    • shared_ptr
      • 可以托管一个new运算符返回的指针
      • shared_ptr<T> ptr(new T)
      • 此后ptr就可以像T*类型的指针一样来使用, 即*ptr就是用new动态分配的那个对象, 且不必操心释放内存的事
      • 多个shared_ptr对象可以同时托管一个指针, 系统会维护一个托管计数. 当无shared_ptr托管该指针时, delete该指针
      • shared_ptr对象不能托管指向动态分配的数组的指针, 否则程序运行会出错
  • 右值引用和move语义

    • 右值引用

      1
      2
      3
      class A{ }
      A& r = A(); // error
      A&& r = A(); // ok

强制类型转换

  • static_cast

    • 用于比较"自然"和低风险的转换
      • 比如整型和实数型、字符型之间互相转换
    • 不能用于不同类型的指针之间互相转换
  • reinterpret_cast

    • 不同类型的指针(引用)之间的转换
  • const_cast

    • 用来去除const属性的转换, 将const引用转换成同类型的非const引用
  • dynamic_cast

    • 专门用于将多态基类的指针或引用, 强制转换为派生类的指针或引用, 而且能够检查转换的安全性. 对于不安全的指针转换结果返回null, 引用转换结果抛出异常