auto(C++11)

auto介绍

在早期,C/C++中 auto 的含义是:使用auto修饰的变量,auto是具有自动存储器的局部变量。
C++11中,标准委员会赋予了auto全新的含义即:auto不再是一个存储类型指示符,而作为一个新的类型指示符来指示编译器,auto声明的变量必须由编译器在编译时期推导而得。

可以使用 typeid().name 去打印对象的类型。

案例分析

int TestAuto()
{return 2;
}int main()
{int a = 10; auto b = a; auto c = 'a'; auto d = TestAuto();  cout << typeid(b).name() << endl; cout << typeid(c).name() << endl;cout << typeid(d).name() << endl;return 0;
}

输出结果

int
char
int

注意:
auto e; 无法通过编译,使用 auto 定义变量时必须对其进行初始化。

在编译阶段编译器需要根据初始化表达式来推导auto的实际类型。因此auto并非是一种“类型”的声明,而是一个类型声明时的“占位符”,编译器在编译期会将auto替换为变量实际的类型。

auto使用细则

  • auto 与指针和引用结合起来使用
  1. 用auto声明指针类型时,用 autoauto* 没有任何区别
  2. auto 声明引用类型时则必须加&

案例分析

int main()
{int x = 10;auto a = &x;auto* b = &x;auto& c = x;cout << typeid(a).name() << endl;cout << typeid(b).name() << endl;cout << typeid(c).name() << endl;*a = 20;*b = 30;c = 40;return 0;
}

输出结果

int * __ptr64
int * __ptr64
int
  • 在同一行定义多个变量

在同一行定义多个变量时,这些变量必须是相同的类型,否则编译器将会报错。
因为编译器实际只对第一个类型进行推导,然后用推导出来的类型定义其他变量。

auto不能推导的场景

  1. auto 不能作为函数的参数

  1. auto 不能直接用来声明数组
void TestAuto()
{ int a[] = {1,2,3}; auto b[] = {4,5,6};
}

  1. 为了避免与C++98中的auto发生混淆,C++11只保留了auto作为类型指示符的用法
  2. auto在实际中最常见的优势用法就是跟C++11提供的新式for循环,还有lambda表达式等进行配合使用。

【C++】详谈 auto相关推荐

  1. 详谈大模型训练和推理优化技术

    详谈大模型训练和推理优化技术 作者:王嘉宁,转载请注明出处:https://wjn1996.blog.csdn.net/article/details/130764843 ChatGPT于2022年1 ...

  2. c++中的auto关键字

    auto的属性特征 #include <iostream> using namespace std;int main() {//1.auto 变量必须在定义时初始化,类似于constaut ...

  3. Auto ML自动特征工程

    Auto ML自动特征工程 特征工程是在做机器学习训练的过程中必不可少的环节,特征工程就是找出对模型结果有益的特征交叉关系,通常特征工程需要耗费算法工程师大量的精力去尝试.针对这样的场景,PAI推出智 ...

  4. Auto ML自动调参

    Auto ML自动调参 本文介绍Auto ML自动调参的算法介绍及操作流程. 操作步骤 登录PAI控制台. 单击左侧导航栏的实验并选择某个实验. 本文以雾霾天气预测实验为例. 在实验画布区,单击左上角 ...

  5. 使用Auto TensorCore CodeGen优化Matmul

    使用Auto TensorCore CodeGen优化Matmul 本文将演示如何使用TVM Auto TensorCore CodeGen在Volta / Turing GPU上编写高性能matmu ...

  6. auto关键字详解 C++

    C++98 auto 早在C++98标准中就存在了auto关键字,那时的auto用于声明变量为自动变量,自动变量意为拥有自动的生命期,这是多余的,因为就算不使用auto声明,变量依旧拥有自动的生命期: ...

  7. WPF中Auto与*的差别

    Auto 表示自己主动适应显示内容的宽度, 如自己主动适应文本的宽度,文本有多长,控件就显示多长. * 则表示按比例来分配宽度. <ColumnDefinition Width="3* ...

  8. hibernate.hbm2ddl.auto的value

    Hibernate 配置参数hibernate.hbm2ddl.auto Hibernate中的配置文件: <properties> <property name="hib ...

  9. C++拾趣——C++11的语法糖auto

    C++是一种强类型的语言,比如变量a,如果声明它是整型,则之后只能将它作为整型来用.这和其他弱类型的语言有很大的区别,比如python中,我们可以让a在第一行是个整型,第三行是一个字符串.(转载请指明 ...

最新文章

  1. 如何实现立体的DataGrid和具有Windows效果的图片按钮
  2. 在Oracle中exception关键字,Oracle表字段有Oracle关键字出现异常解决方案
  3. 898. 子数组按位或操作
  4. JUnit3 结合一个除法的单元测试说明Assert.fail()的用法
  5. Lambda 表达式详解~深入JVM实现原理
  6. C# combobox SelectedText值为空
  7. Office默认打开方式的改变方法以及安装程序莫名启动问题的权威汇总
  8. 小爱同学app安卓版_小爱同学手机版安卓下载_小爱同学app下载 v2.7.43 - 87G手游网...
  9. 古力乐简易网址导航综合搜索引擎站html源码
  10. 【合宙GSM模块Air202 烧录iRTU固件连接阿里云】
  11. python删除重复文件
  12. 个性化茅台之中国酒韵·十大人物
  13. BreederDAO 宣布与 20 多个区块链游戏建立官方合作关系
  14. 感性负载对电源的影响有多大?
  15. 人生低谷一日感悟+收获
  16. java课程设计qq_Java课程设计(qq聊天程序)
  17. 魅族MX4安装Ubuntu Touch系统
  18. 2022艾灸展,艾健康展,艾棒展,山东艾制品展,艾绒纺织展
  19. 关于频谱分析中两个重要指标:频率分辨率和时间分辨率的理解及计算
  20. Python简单网页爬取

热门文章

  1. ipad 浏览器 java_在iPad Safari上的java – onpagehide事件
  2. android5.1显示工具栏,讯飞输入法5.1.1805定制专属工具栏
  3. 关于S7200的PPI地址无法更改
  4. PPT(WPS演示)+Python win32com办公自动化
  5. Java常用操作符简介说明
  6. 我为何要倒行逆施,解散微信群?
  7. 微信小程序--两个小程序之间携带数据跳转
  8. 程序员团队名称和口号_在拓展活动中展现团队的洪荒之力吧!
  9. 【DTCC2016】谁敢横刀立马,但看超级技术宅男如何PK超红明星权志龙
  10. Allure report 截图