c++--auto

📅 2026/7/11 10:46:22
c++--auto
auto介绍auto并非是一种“类型”而是一个类型声明时的“占位符”编译器在编器期会将auto替换为变量实际的类型(通过分析数据)。使用auto定义变量时必须对其进行初始化因为在编译阶段编译器需要根据初始化表达式来推导auto的实际类型。举个例子int a 1等价于auto a 1这时候auto被替换为int使用细则如果用auto同时定义多个变量如auto a 1,b 2; a和b的初始化数据的类型必须一样否则会报错。auto定义指针变量时可以用auto a x,也可以用auto*a x。后者表示a的类型一定是指针否则报错。用auto推导引用类型时要在auto后加即auto x xxx;auto不能定义数组不能作为函数参数类型Auto和decltype区别auto 和 decltype都是用于自动类型推导的关键字他们的使用方法如下auto x 10; decltype(x) y;它们的区别如下auto是类型‘占位符’只有在初始化一个值的时候才能用auto类型而decltype直接把表达式类型提取出来可以用于任何地方因此decltype要比auto灵活的多(甚至可以定义数组做函数参数)。在对CV限定符的处理方面const 和 volatile 关键字的统称const 关键字用来表示数据是只读的也就是不能被修改。volatile 和 const 是相反的它用来表示数据是可变的、易变的目的是不让 CPU 将数据缓存到寄存器而是从原始的内存中读取decltype会保留CV限定符而auto是分情况初始值是引用或指针类型的话就保留其他类型直接去除CV。在对引用类型的处理方面auto会去掉引用类型直接推导出其原始类型但是可以直接在auto后面加表示这是引用类型而decltype则是会保留引用类型这意味着auto x y , y是某变量的引用x是全新的变量而不是谁的引用但是auto也不是一无是处它最大的优点就是简单