C++11新标准:auto关键字
一、auto意义
编程时常常需要把表达式的值赋给变量,这就要求在声明变量的时候清楚地知道表达式的类型,然后要做到这一点并非那么容易。为了解决这个问题,C++11新标准引入了auto类型说明符,用它就能让编译器替我们去分析表达式所属的类型。
二、auto用法
1.基本用法
int tempA = ;
int tempB = ;
/*1.正常推断auto为int,编译通过*/
auto autoTempA = tempA + tempB;
/*2.正常推断auto为int,编译通过*/
auto autoTempB = , *autoTempC = &autoTempB;
/*3.autoTempD推断为int,autoTempE推断为double,编译不过*/
auto autoTempD = , autoTempE = 3.14;
2.与const结合
const int ctempA = ;
auto autoTempA = ctempA; /*1.cautoTempA推断为int,但是手动加了const,所以cautoTempA最终类型为const int*/
const auto cautoTempA = ctempA;
/*2.autoTempA推断为int,忽略顶层const*/
autoTempA = ;
3.与引用结合
int tempA = ;
int &refTempA = tempA;
/*1.忽略引用,autoTempA推断为int,refAutoTempA被手动置为引用*/
auto autoTempA = refTempA;
auto &refAutoTempA = refTempA; autoTempA = ;
refAutoTempA = ;
/*2.输出为3,3,4,3*/
cout<<"tempA = "<<tempA<<endl;
cout<<"refTempA = "<<refTempA<<endl;
cout<<"autoTempA = "<<autoTempA<<endl;
cout<<"refAutoTempA = "<<refAutoTempA<<endl;
4.与指针结合
int tempA = ;
const int ctempA = ; /*1.ptrTempA中auto推断为int*,ptrTempB中推断为int */
auto ptrTempA = &tempA;
auto *ptrTempB = &tempA;
/*2.cptrTempA中auto推断为const int*,cptrTempB中推断为cosnt int */
auto cptrTempA = &ctempA;
auto *cptrTempB = &ctempA;
/*3.ptrTempA和ptrTempB输出完全一致*/
cout<<" ptrTempA = "<<ptrTempA<<endl;
cout<<"*ptrTempA = "<<*ptrTempA<<endl;
cout<<" ptrTempB = "<<ptrTempB<<endl;
cout<<"*ptrTempB = "<<*ptrTempB<<endl;
/*4.cptrTempA和cptrTempB输出完全一致*/
cout<<" cptrTempA = "<<cptrTempA<<endl;
cout<<"*cptrTempA = "<<*cptrTempA<<endl;
cout<<" cptrTempB = "<<cptrTempB<<endl;
cout<<"*cptrTempB = "<<*cptrTempB<<endl;
/*5.cptrTempA指向的为const int,不能通过cptrTempA来修改其值,编译不过*/
*cptrTempA = ;
三、auto使用总结
上面的例子只是为了说明auto与const、引用和指针的用法,在实际工作中,auto主要还是为了简化一些复杂的声明;但是建议在使用时必须要清楚自己auto出来的类型到底是什么,这样才能做到心中有数,出现问题才能快速定位。
C++11新标准:auto关键字的更多相关文章
- C++11新标准:decltype关键字
一.decltype意义 有时我们希望从表达式的类型推断出要定义的变量类型,但是不想用该表达式的值初始化变量(如果要初始化就用auto了).为了满足这一需求,C++11新标准引入了decltype类型 ...
- C++11新标准:nullptr关键字
一.nullptr的意义 1.NULL在C中的定义 #define NULL (void*)0 2.NULL在C++中的定义 #ifndef NULL #ifdef __cplusplus #defi ...
- C++11新标准学习
<深入理解C++11:C++11新特性解析与应用> <华章科技:深入理解C++11:C++11新特性解析与应用>一共8章:第1章从设计思维和应用范畴两个维度对C++11新标准中 ...
- C++11新特性— auto 和 decltype 区别和联系
一. auto简介 编程时候常常需要把表达式的值付给变量,需要在声明变量的时候清楚的知道变量是什么类型.然而做到这一点并非那么容易(特别是模板中),有时候根本做不到.为了解决这个问题,C++11新标准 ...
- C++11特性:auto关键字
前言 本文的内容已经不新鲜了.关于auto,翻来覆去被人知道的都是这些东西,本文并没有提出新颖的auto用法. 本人原是痛恨博客一篇篇都是copy而来缺乏新意的探索,当然,本文不是copy而来,但发布 ...
- c++11新标准for循环和lambda表达式
:first-child { margin-top: 0px; } .markdown-preview:not([data-use-github-style]) h1, .markdown-previ ...
- C++11 - 类型推导auto关键字
在C++11中,auto关键字被作为类型自动类型推导关键字 (1)基本用法 C++98:类型 变量名 = 初值; int i = 10; C++11:auto 变量名 = 初值; auto i ...
- 关注C++细节——C++11新标准之decltype的使用注意
c++11新特性--decltype decltype是C++11加入的一个新的keyword,目的是选择并返回操作数的数据类型,重要的是,在此过程中编译器分析表达式并得到它的类型,却不实际计算表达式 ...
- C++11新标准:constexpr关键字
一.constexpr意义 将变量声明为constexpr类型以便由编译器来验证变量是否是一个常量表达式(不会改变,在编译过程中就能得到计算结果的表达式).是一种比const更强的约束,这样可以得到更 ...
随机推荐
- loopqueue
import java.util.Arrays; public class loopQueue <E>{ public Object[] data=null; private int ma ...
- 使用swing构建一个界面(包含flow ,Border,Grid,card ,scroll布局)
package UI; import java.awt.BorderLayout;import java.awt.CardLayout;import java.awt.Cursor;import ja ...
- redis client API-----------python
想知道redis针对各种编程语言推荐的接口API实现,请参考http://redis.io/clients/ 选择python语言,则使用https://github.com/andymccurdy/ ...
- 把ASM下的HDD VM转换成ARM下Managed Disk的SSD VM
在ASM下,要把HDD的VM转换成SSD的VM步骤非常复杂.需要手工把Disk从普通存储账户复制到高级存储账户.再通过这个Disk创建VM. 目前在有了ASM到ARM的迁移工具,以及Managed D ...
- QtCreator开启-O编译优化的方式
首先,编译优化必须是在Release模式下进行,保证程序没有任何bug的条件下进行执行.编译优化能极大提升程序的运行效率,级别越高速度越快,但是对代码健壮性要求也越高! 选择编译release模式,在 ...
- 为什么 Eclipse 里的 Classpath Variables M2_REPO 无法修改(non modifiable)
本文转载自:http://uule.iteye.com/blog/2034097 解决方法: 在C:\Documents and Settings\Administrator\.m2中放入settin ...
- Java基础--CountDownLatch
CountDownLatch是线程同步辅助类,它允许一个或多个线程wait直到countdown被调用使count为0. CountDownLatch是在java1.5被引入,存在于java.util ...
- minidump-DMP文件的生成和使用
转载地址点击打开链接 1.生成dmp的程序 #include <dbghelp.h> #pragma comment(lib, "dbghelp.lib") //设 ...
- 分析诊断工具之一:MYSQL性能查看(多指标)
网上有很多的文章教怎么配置MySQL服务器,但考虑到服务器硬件配置的不同,具体应用的差别,那些文章的做法只能作为初步设置参考,我们需要根据自己的情况进行配置优化,好的做法是MySQL服务器稳定运行了一 ...
- 杂项:DCloud.io
ylbtech-杂项:DCloud.io 1.返回顶部 1. DCloud.io,数字天堂(北京)网络技术有限公司. 国内HTML5产业的领军企业,W3C会员,HTML5中国产业联盟发起单位Dclou ...