C++ auto关键字
C 11 中有:auto 类型推导
auto x = 5; // OK: x 是 int 类型
auto pi = new auto(1); // OK: pi 被推导为 int*
const auto *v = &x, u = 6; // OK: v是const int*类型,u是const int类型
static auto y = 0.0; //OK: y是double类型
auto int r; //error: auto不再表示存储类型指示符
auto s; //error: auto无法推导出s的类型
一、auto的推导规则
从示例中可以看到auto的一些使用方法。它可以同指针、引用结合起来使用,还可以带上cv限定符(cv-qualifier,const和volatile限定符的统称)
auto * a = &x; // a -> int*,auto被推导为int
auto b = &x; // b -> int*,auto被推导为int*
auto & c = x; // c -> int&,auto被推导为int
auto d = c; // d -> int ,auto被推导为int
const auto e = x; // e -> const int
auto f = e; // f -> int
const auto& g = x; // e -> const int&
auto& h = g;// f -> const int&
- a和c的推导结果是很显然的,auto在编译时被替换为int,因此a和c分别被推导为int*和int&
- b的推导结果说明,其实auto不声明为指针,也可以推导出指针类型
- d的推导结果说明当表达式是一个引用类型时,auto会把引用类型抛弃,直接推导成原始类型int
- e的推导结果说明,const auto会在编译时被替换为const int
- f的推导结果说明,当表达式带有cons(t实际上volatile也会得到同样的结果)属性时,auto会把const属性抛弃掉,推导成non-const类型int
- g、h的推导说明,当auto和引用(换成指针在这里也将得到同样的结果)结合时,auto的推导将保留表达式的const属性
通过上面的一系列示例,可以得到下面这两条规则:
1)当不声明为指针或引用时,auto的推导结果和初始化表达式抛弃引用和cv限定符后类型一致
2)当声明为指针或引用时,auto的推导结果将保持初始化表达式的cv属性
二、auto的限制
- auto是不能用于函数参数
- auto不能用于非静态成员变量
- auto无法定义数组
- auto无法推导出模板参数
推荐一个零声学院免费教程,个人觉得老师讲得不错,
分享给大家:
C 初级课程链接:
https://ke.qq.com/cozurse/444655?flowToken=1043280
Qt课程链接:
https://ke.qq.com/course/444655?flowToken=1044614
这篇好文章是转载于:学新通技术网
- 版权申明: 本站部分内容来自互联网,仅供学习及演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,请提供相关证据及您的身份证明,我们将在收到邮件后48小时内删除。
- 本站站名: 学新通技术网
- 本文地址: /boutique/detail/tanhiagiei
系列文章
更多
同类精品
更多
-
photoshop保存的图片太大微信发不了怎么办
PHP中文网 06-15 -
word里面弄一个表格后上面的标题会跑到下面怎么办
PHP中文网 06-20 -
photoshop扩展功能面板显示灰色怎么办
PHP中文网 06-14 -
《学习通》视频自动暂停处理方法
HelloWorld317 07-05 -
TikTok加速器哪个好免费的TK加速器推荐
TK小达人 10-01 -
Android 11 保存文件到外部存储,并分享文件
Luke 10-12 -
微信公众号没有声音提示怎么办
PHP中文网 03-31 -
excel下划线不显示怎么办
PHP中文网 06-23 -
微信运动停用后别人还能看到步数吗
PHP中文网 07-22 -
excel打印预览压线压字怎么办
PHP中文网 06-22