C++ auto和decltype的区别
通过《 C++ auto 》和《 C++ decltype 》两节的学习,相信大家已经掌握了 auto 和 decltype 的语法规则以及使用场景,这节我们将 auto 和 decltype 放在一起,综合对比一下它们的区别,并告诉大家该如何选择。 语法格式的区别 auto 和 decltype 都是 C++ 11 新增的关键字,都用于自动类型推导,但是它们的语法格式是有区别的,如下所示: auto varname = value; //auto的语法格式 decltype(exp) varname [= value]; //decltype的语法格式 其中,varname 表示变量名,value 表示赋给变量的值,exp 表示一个表达式,方括号 [ ] 表示可有可无。 auto 和 decltype 都会自动推导出变量 varname 的类型: auto 根据 = 右边的初始值 value 推导出变量的类型; decltype 根据 exp 表达式推导出变量的类型,跟 = 右边的 value 没有关系。 另外,auto 要求变量必须初始化,也就是在定义变量的同时必须给它赋值;而 decltype 不要求,初始化与否都不影响变量的类型。这很容易理解,因为 auto 是根据变量的初始值来推导出变量类型的,如果不初始化,变量的类型也就无法推导了。 auto