inta =1;int& b = a;//b->int& 用->表示推导出类型,下同 auto c = b;//c->int AI代码助手复制代码 (2)auto 在推断引用的类型时,会直接将引用替换为引用指向的对象。 引用不是对象,任何引用的地方都可以直接替换为引用指向的对象。 inta =10;constint& b = a ;// b-> const int&autoc = b...
auto类型推导规则如下: 1. 初始化语句中存在单一类型:如果初始化语句中存在一个明确的类型,那么auto会将变量的类型推导为该类型。例如: auto x = 10; // x推导为int类型 auto pi = 3.14; // pi推导为double类型 2. 初始化语句中存在多个表达式,则auto推导为“最宽泛”的类型:当初始化语句中有多个表达式,...
constcharname[] ="R. N. Briggs";autoarr1 = name;// arr1's type is const char*auto& arr2 = name;// arr2's type is const char (&)[13] voidsomeFunc(int,double);autofunc1 = someFunc;// func1's type is void (*)(int, double)auto& func2 = someFunc;// func2's type is...
具体规则如下: 如果右侧是一个变量,则auto会推导为该变量的类型。 int a = 10; auto b = a; // b的类型会被推导为int 复制代码 如果右侧是一个常量表达式,则auto会推导为该常量表达式的类型。 auto c = 10; // c的类型会被推导为int 复制代码 如果右侧是一个表达式,则auto会根据表达式的类型进行推导。
规则1: auto声明的变量是按值初初始化。 如果没有显示的使用引用,也没有指针。那么编译器在推导的时候会忽略const和volatile限定符。 constinta=10;autob=a;// b 为 int, 而不是constauto&c=a;// c 为 const int&constautoe=a;//auto 推导的类型为int, e的类型为 const int(auto) ...
当auto推导结果为指针时,保留cv操作符。 其它情况不保留cv限定符和引用。 intmain(){intx =0;constauto* a = &x;// a -> const int *autob = &x;// b -> int *auto&c = x;// c -> int &autod = c;// d -> intconstautoe = x;// e -> const intautof = e;// f -> int...
上篇文章讲了模板参数的推导规则,其实auto的推导规则跟模板参数的推导基本上一样的,都是推导参数嘛。比如上篇文章的模板基本结构是: template<typename T>voidf(ParamType param); ... f(expr); 编译器使用expr来推断ParamType和T。 那么对应在auto推导中,auto就对应了T,变量的type specifier就是ParamType: auto...
当auto推导结果为指针时,保留cv操作符。 其它情况不保留cv限定符和引用。 intmain(){intx =0;constauto* a = &x;// a -> const int *autob = &x;// b -> int *auto&c = x;// c -> int &autod = c;// d -> intconstautoe = x;// e -> const intautof = e;// f -> int...