C++系列
[Cpp基础] [07] 复杂类型和类型推断
数组类型和函数类型 尽管在大部分场合中,数组类型和函数类型都被转换成某种指针使用,然而它们确实是某种类型. 这一点在类型推导中很重要,因为类型推导可以推导出数组类型/函数类型 * 数组类型逻辑上类似于std::array,由T和N两个属性决定唯一的数组类型,称T[N]型对象为数组类型,其中N必须为constexpr,称T array[N]为T[N]的一个实例. * T和N必须都相同才是同一个array类型. * 数组类型可以被隐式decay为指向数组首元素的指针. * 转换为指针后,长度信息就丢失了. * 在T[N]做函数形参时,编译器一定会将形参转换为指针,从而可以接受长度不同的数组,长度信息也随之丢失. * 数组的长度信息未丢失时,编译器及用户是可以获取到这些长度信息的.sizeof(array)/sizeof(array[0])就是元素数量. * 可以使用引用型形参来保留数组的长度信息,对于模板,还可以使用自动推断. * 自动推断:template<class T>fun(T &