目录
条款05(优点):优先考虑auto类型推导,而非显式类型声明(Prefer auto to explicit type declarations)
优点1:auto可以避免未初始化的变量。
优点2:auto可以避免啰嗦/繁琐的变量声明。
优点3:auto可以直接持有闭包(由lambda式创建的运行期对象)。
优点4.1:auto可以避免由于“类型捷径(type shortcuts)/类型不匹配”所导致的兼容性问题。
优点4.2:auto可以避免由于“类型捷径/类型不匹配”所导致的效率问题。
优点5:auto可以简化“代码重构(refactoring)”的流程。
小结
条款05(优点):优先考虑auto类型推导,而非显式类型声明(Preferautotoexplicit type declarations)
优点1:auto可以避免未初始化的变量。
- 显式类型声明:变量是否被初始化,取决于具体语境(有时会被初始化,有时不会被初始化)。当使用未初始化的变量时,可能会造成未定义行为。
- auto类型声明:由于变量类型“推导自”其初始化物,因此必须初始化(否则编译错误)。这一特性能够避免因变量未初始化而引发的一系列潜在问题(如未定义行为)。
优点2:auto可以避免啰嗦/繁琐的变量声明。
- 场景描述:使用“迭代器所指物/迭代器的解引用结果”来初始化“变量”。
- 显式类型声明:变量类型需要通过“迭代器萃取机iterator_traits”获取。进一步地,若变量声明在模板内部 且 迭代器类型依赖于模板类型参数,则变量类型还需要添加“typename”前缀。(提醒:对于STL迭代器而言,使用按值传递更高效。)
- auto类型声明: