新兵易学,老兵易用----C++(C++11的学习整理---如何减少代码量,加强代码的可读性)
1.auto类型推导
auto推导最大的优势就是在拥有初始化表达式的复杂类型变量声明时简化代码。
auto第二个优势就是免去了程序员在一些类型声明时的麻烦,或者避免一些在类型声明时的错误。
auto第三个优势就是其“自适应”性能能够在一定程度上支持泛型的编程。
auto的四个使用细则:
1)函数:不能是形参
2)结构体:不能是静态类型
3)数组:不能声明数组
4)模板实例化:不能作为模板参数
2.decltype推导细则
1)如果e是一个没有带括号的表姐符表达式或者类成员访问表达式,那么decltype(e)就是e所命名的实体;
2)否则,就是设e的类型是T,如果e是一个将亡值,那么decltype(e)为T&&;
3)否则,就是设e的类型是T,如果e是一个左值,那么decltype(e)为T&;
4)否则,就是设e的类型是T,那么decltype(e)为T;
3.CV限制符的继承与冗余
decltype是可以冗余的,但是其推导的成员是不能继承const,volatile。
4.基于范围的for循环(做的比for_each更快更好)
5.追踪类型返回(真正释放了c++11的泛型编程的能力与更方便的使用模板)