在上一章节中,说到了引用,其作用是相当于给一个变量取了一个别名,并对该与其绑定的别名不离不弃~~那么,这次就来说说给定义变量的类型来取个别名。这儿就需要说到关键字typedef 和 using。
之前在使用typedef时主要是在定义结构体的时候,相当于给结构体取了一个类型名~当使用typedef给类型取别名时,如下图所示:
当使用using给类型取别名时,如下图所示:
只要是原类型能出现的地方,则其对应的类型别名均能出现。说到这儿是不是觉得比较直白明了,那么下面来个进阶版吧~~如下图:
是不是有点晕了,原来取了别名后,对于这种含有指针的综合结构是不能简单地用原来的名字进行替换的~而是应该将*与其前面的类型当作整体,也就是指向该类型的指针,其落脚点在于其是指针,所以当用该别名定义其他变量时,首先应将其视为指针,若其前有const,则说明其是常量指针。
好了,下面说说auto,这个我自己用得比较少,稍作了解吧~
auto也就是自动的意思,为什么要自动呢,也就是因为情况不明确,当将一个表达式的值赋值给一个变量时,如果这个表达式的类型人为事先无法确定时,那么就把这个任务交给编译器取处理吧,那么编译器如何知道得靠自己来确定呢,auto就是这样的一个声明的作用,告诉编译器此处需要靠它来自动确定变量的类型了,所以,用auto声明的变量必须对其进行初始化。如下图所示:
上面的auto是给不确定类型的变量进行初始化,那么如果纯粹的只是想知道不确定类型的表达式最后的类型是什么的话,就可以用decltype来解决了,该关键字表示让编译器分析表达式的类型却对表达式不作具体的计算。如下图:
下面说说auto与decltype的区别: