auto不仅能自动推导类型,而且可以使模板代码更通用。

1. auto

auto a = expr; // expr可以是任意类型,包括T, T*, T* const
auto a* expr; // expr只能是T*,智能指针也不能用
const auto a* = expr; // expr只能是T*,且a保证是const T*

auto a = expr; // a是一个值类型(copy或move)
const auto & a = expr; // a是expr的引用/别名(无copy或move)
auto && a = expr; // a是expr的转发引用,后续用std::foward保持其属性,转发引用会不改变其左/右值属性。

2. 后置类型声明

  1. auto foo(参数) -> 返回值类型
    
  2. auto与decltype联合使用

3. auto的适用场景

  1. 类型名重复
  2. 不关心类型
  3. 写不出来,如lambda

auto pos = GetPosition();这里不适合使用auto

results matching ""

    No results matching ""