C++11 AUTO 类型实践
auto在C++11中引入,为大家带来方便。
具体使用及注意事项参考:
https://blog.csdn.net/xiaoquantouer/article/details/51647865
https://www.cnblogs.com/lenmom/p/7988635.html
用法:
一是在变量声明时根据初始化表达式自动推断该变量的类型。适用于类型冗长复杂,模板类型等
二是在声明函数时作为函数返回值的占位符
注意事项:
1.使用auto关键字的变量必须有初始值。类似引用
2.函数参数和模板参数不能被声明为auto。
3.使用auto关键字声明变量的类型,不能自动推导出顶层的CV-qualifiers和引用类型,除非显示声明
使用auto关键字进行类型推导时,如果初始化表达式是引用类型,编译器会去除引用,除非显示声明
使用auto使用auto关键字进行类型推导时,编译器会自动忽略顶层const,除非显示声明
详见例子
int main()
{
auto fnum = 3.14;
auto str("hello");
cout << "fnum type:" << typeid(fnum).name() << endl;
cout << "str type:" << typeid(str).name() << endl; vector<int> vec;
auto v_it = vec.begin();
cout << "v_it type:" << typeid(v_it).name() << endl; int int_ori = ;
int &ori_b = int_ori;
auto a = ori_b;
a = ;
cout << "int_ori: " << int_ori << " ori_b: " << ori_b << " a: " << a << endl;
auto &b = ori_b;
b = ;
cout << "int_ori: " << int_ori << " ori_b: " << ori_b << " a: " << a <<" b: " << b <<endl; const int cint_a = ;
auto a2 = cint_a;
auto const a3 = cint_a;
cout << "a2 type:" << typeid(a2).name() << " a3 type: " << typeid(a3).name() << endl; system("pause");
return ;
}

说明:
auto &b显示声明了引用,所以改变了原始值。但 a 并非引用只是被赋值的独立变量,因此未被b修改
最后的变量 a3是 const int 型如修改值会报错,而a2是 int 型可以修改
C++11 AUTO 类型实践的更多相关文章
- C++11  auto类型说明符的使用
		
编程的时候常常需要把表达式的值赋给变量,这就要求在声明变量的时候清楚地知道表达式的类型.然而做到这一点很难,有时候根本做不到.为了解决这个问题.C++11新标准引入了auto类型说明符,用它就 能让编 ...
 - c++11——auto,decltype类型推导
		
c++11中引入了auto和decltype关键字实现类型推导,通过这两个关键字不仅能够方便的获取复杂的类型,而且还能简化书写,提高编码效率. auto和decltype的类型推导都是编译器在 ...
 - C++11常用特性介绍——auto类型修饰符
		
1.C++11常用特性介绍 从本篇开始介绍C++11常用特性,大致分:关键字及新语法.STL容器.多线程.智能指针内存管理,最后讲一下std::bind和std::function 二.关键字和新语法 ...
 - Effective Modern C++翻译(3)-条款2:明白auto类型推导
		
条款2 明白auto类型推导 如果你已经读完了条款1中有关模板类型推导的内容,那么你几乎已经知道了所有关于auto类型推导的事情,因为除了一个古怪的例外,auto的类型推导规则和模板的类型推导规则是一 ...
 - item 2: 理解auto类型的推导
		
本文翻译自modern effective C++,由于水平有限,故无法保证翻译完全正确,欢迎指出错误.谢谢! 博客已经迁移到这里啦 如果你已经读过item 1的模板类型推导,你已经知道大部分关于au ...
 - 现代C++之理解auto类型推断
		
理解auto类型推断 上一篇帖子中讲述了模板类型推断,我们知道auto的实现原理是基于模板类型推断的,回顾一下模板类型推断: template <typename T> void f(Pa ...
 - c++11 auto 与 decltype 详解
		
转自: here 一. auto简介 编程时候常常需要把表达式的值付给变量,需要在声明变量的时候清楚的知道变量是什么类型.然而做到这一点并非那么容易(特别是模板中),有时候根本做不到.为了解决这个问题 ...
 - auto类型-现代C++新特性
		
auto类型 C++11中引入的auto主要用于类型推导.auto在C++98中"存储类型指示符"的语义,由于使用极少且多余,该语义从C++11开始被删除. auto类型推导用于从 ...
 - auto类型说明符的注意事项
		
1.auto类型说明符,是C++11标准下的,它能让编译器自行判断表达式的类型. 2.auto也能在一条语句上声明多个变量,但是,该语句上的多个变量的类型,必须一致. 3.编译器推断出来auto类型可 ...
 
随机推荐
- mac 上传下载iterm2
			
1.安装Homebrew,目的是执行 brew 命令,解决 brew: command not found问题 ruby -e "$(curl -fsSL https://raw.githu ...
 - 重新打开Eclipse出现“An internal error has occurred. java.lang.NullPointerException”
			
如果出现了上述的错误按照如下的3个步骤解决:1.首先关闭MyEclipse工作空间.2.然后删除工作空间下的. “/.metadata/.plugins/org.eclipse.core.runtim ...
 - GTF文件
			
一.GTF文件格式 Fields must be tab-separated. Also, all but the final field in each feature line must cont ...
 - IdeaVim-常用操作
			
IdeaVim简介 IdeaVim是IntelliJ IDEA的一款插件,他提高了我们写代码的速度,对代码的跳转,查找也很友好. 安装位置 安装之后它在 Tools > Vim Emulator ...
 - webx roadmap
			
SpringExt 自定义Spring Schema的例子 基于Spring可扩展Schema提供自定义配置支持 使用SpringExt扩展Webx的示例 扩展点和捐献 一个namespace下可以声 ...
 - git删除仓库的某个文件
			
可以用git rm命令删除文件(删除远程仓库文件) git clone 仓库地址 git add . git rm 文件//本地中该文件会被删除 git rm -r文件夹 //删除文件夹 上面会把对应 ...
 - JavaScript数组倒序函数reverse()
			
左边为原数组,右边为array.reverse()的结果: 函数很简单,但是 var temp = ChartConfig.getMonthData(); $scope.monthList = tem ...
 - ARMCortex系列仿真调试器
			
主流的调试工具1. J-LinkJ-Link是最著名的ARM开发调试工具,J-Link由SEGGER公司生产.提供对市面上几乎所有ARM内核芯片的支持.目前最新版本的J-Link产品为V8,支持JT ...
 - 网络类型IPv4和IPv6什么意思?区别?
			
在windows 7以上系统中,在设置本地IP地址的时候经常会看到同事含有IPV4协议项与IPV6协议项,并不同于以往windows xp系统中仅有TCP/IP协议项,不少朋友都觉得比较奇怪,询问编辑 ...
 - Javaweb中提到的反射浅析(附源码)
			
反射:一个jdk5.0的新特性,高级运用.在后期的框架中,这个是一大重点,现在估计我们都不会太多的接触他的.但是为了后面的铺垫,我想还是先了解一下: 先构造一个类,然后我们用反射来获取,调用里面的方法 ...