如何把网站推广,网站建设捌金手指花总十,网站宣传方案,wordpress 极简模版当auto推导变量类型时#xff0c;const修饰符会影响推导结果#xff0c;我们具体看一下有哪些影响 1、普通变量 例如#xff1a;
const int ci 42;
auto a ci; // a 的类型是 int (顶层 const 被忽略)
const auto ca ci; // ca 的类型是 const int (顶层 const 被…当auto推导变量类型时const修饰符会影响推导结果我们具体看一下有哪些影响 1、普通变量 例如
const int ci 42;
auto a ci; // a 的类型是 int (顶层 const 被忽略)
const auto ca ci; // ca 的类型是 const int (顶层 const 被添加)在这里ci是一个const int但是auto a ci;推断出的类型仅仅是int因为auto忽略了顶层const。 对于const auto ca ci;ca不仅继承了ci的类型int还因为const的存在而成为了const int。 普通变量比较好理解。 2、指针 const就是指针比较复杂 例如
const int* pci ci;
auto p pci; // p 的类型是 const int* (底层 const 被保留)
const auto cp pci; // cp 的类型是 const int* const (顶层 const 被添加底层 const 也被保留)
const int* pci ci; 通过上一篇文章我们先看左边左边没有再看右边右边是int那说明const绑定的是int也就是值不能改变所以const修饰的是指针指向的对象而不是指针本身所以这里的const是底层const。 auto p pci; auto推导会忽略顶层const但是不会忽略底层const所以p的类型是const int*即它指向的是一个const int。
总结 1、auto推导类型时会忽略顶层const但会保留底层const。 2、使用const auto时const会被添加到推导出的类型上如果初始化表达式中包含底层const最后就是(顶层 const 底层 const)。