C++11关于auto关键字的使用示例
一.概述
auto关键字在c++98中已经出现,在98中定义为具有自动存储器的局部变量,
c++11中标准委员会重新定义了auto关键字,表示一个类型占位符,告诉编译器,auto声明变量的类型必须由编译器在编译时期推导
而得。
注意事项:
1.auto关键字类型推断发生在编译期,程序运行时不会造成效率降低
2.auto关键字定义时就需要初始化
3.auto仅仅是一个占位符,它并不是一个真正的类型, 因此sizeof(auto)是错误的
4.auto不能作为函数的参数
5.auto不能定义数组,如auto a[3] = {1,2,3}; 错误
二.使用
1.自动推导变量类型
auto a = 1; auto b = 2LL; auto c = 1.0f; auto d = "woniu201"; printf("%s\n", typeid(a).name()); printf("%s\n", typeid(b).name()); printf("%s\n", typeid(c).name()); printf("%s\n", typeid(d).name());
2.简化代码
//在对一个vector容器遍历的时候,传统的方法如下: vector<int> v; for (vector<int>::iterator it = v.begin(); it != v.end(); it++) { printf("%d ", *it); } //使用auto关键字,简化后的方法如下: for (auto it = v.begin(); it != v.end(); it++) { printf("\n%d ", *it); } //auto关键字的存在使得使用STL更加容易,代码更加清晰。
总结
以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作具有一定的参考学习价值,谢谢大家对我们的支持。如果你想了解更多相关内容请查看下面相关链接
相关推荐
-
C++11新特性之auto的使用
前言 C++是一种强类型语言,声明变量时必须明确指出其类型.但是,在实践中,优势我们很难推断出某个表达式的值的类型,尤其是随着模板类型的出现,要想弄明白某些复杂表达式的返回类型就变得更加困难.为了解决这个问题,C++11中引入的auto主要有两种用途:自动类型推断和返回值占位.auto在C++98中的标识临时变量的语义,由于使用极少且多余,在C++11中已被删除.前后两个标准的auto,完全是两个概念. 一.自动类型推断 auto自动类型推断,用于从初始化表达式中推断出变量的数据类型.通过aut
-
详解C++的模板中typename关键字的用法
typename的使用场合 用处1, 用在模板定义里, 标明其后的模板参数是类型参数. 例如 template<typename T, typename Y> T foo(const T& t, const Y& y){//....}; templace<typename T> class CTest { private: T t; public: //... } 其实,这里最常用的是使用关键字class,而且二者功能完全相同,这里的class和定义类时的class
-
C++中的auto_ptr智能指针的作用及使用方法详解
智能指针(auto_ptr) 这个名字听起来很酷是不是?其实auto_ptr 只是C++标准库提供的一个类模板,它与传统的new/delete控制内存相比有一定优势,但也有其局限.本文总结的8个问题足以涵盖auto_ptr的大部分内容. auto_ptr是什么? auto_ptr 是C++标准库提供的类模板,auto_ptr对象通过初始化指向由new创建的动态内存,它是这块内存的拥有者,一块内存不能同时被分给两个拥有者.当auto_ptr对象生命周期结束时,其析构函数会将auto_ptr对象拥
-
C++ operator关键字(重载操作符)的用法详解
operator是C++的关键字,它和运算符一起使用,表示一个运算符函数,理解时应将operator=整体上视为一个函数名. 这是C++扩展运算符功能的方法,虽然样子古怪,但也可以理解:一方面要使运算符的使用方法与其原来一致,另一方面扩展其功能只能通过函数的方式(c++中,"功能"都是由函数实现的). 一.为什么使用操作符重载? 对于系统的所有操作符,一般情况下,只支持基本数据类型和标准库中提供的class,对于用户自己定义的class,如果想支持基本操作,比如比较大小,判断是否相等,
-
C++ auto类型说明符
编程时常常需要把表达式的值赋给变量,这就要求在声明变量的时候清楚知道表达式的类型.然而要做到这一点并非那么容易,有时候甚至根本做不到.为了解决这个问题,C++11标准引入了auto类型说明符,用它就能让编译器替我们去分析表达式所属的类型. 与原来那些只对应一种特定类型的说明符不同,auto让编译器通过初值来推算变量类型.显然,auto定义的变量必须要有初始值. 使用auto具有以下几点好处: 可靠性:如果表达式的类型发生更改(包括函数返回值发生更改的情况),它也能工作. 性能:确保将不会进行转换
-
C++11新特性中auto 和 decltype 区别和联系
C++11新特性中auto 和 decltype 区别和联系 一. auto简介 编程时候常常需要把表达式的值付给变量,需要在声明变量的时候清楚的知道变量是什么类型.然而做到这一点并非那么容易(特别是模板中),有时候根本做不到.为了解决这个问题,C++11新标准就引入了auto类型说明符,用它就能让编译器替我们去分析表达式所属的类型.和原来那些只对应某种特定的类型说明符(例如 int)不同.auto 让编译器通过初始值来进行类型推演.从而获得定义变量的类型,所以说 auto 定义的变量必须有初始
-
C++ override关键字使用详解
C++ override从字面意思上,是覆盖的意思,实际上在C++中它是覆盖了一个方法并且对其重写,从而达到不同的作用.在我们C++编程过程中,最熟悉的就是对接口方法的实现,在接口中一般只是对方法进行了声明,而我们在实现时,就需要实现接口声明的所有方法.还有一个典型应用就是在继承中也可能会在子类覆盖父类的方法. 公有继承包含两部分:一是"接口"(interface),二是 "实现" (implementation). 例如Person类的几种成员函数的继承方式: c
-
c++使用正则表达式提取关键字的方法
下面看下c++通过正则表达式提取关键字,代码如下所示: string text = "岳云鹏的对象叫铁锤"; regex pattern("(.*)的对象叫(.*)"); smatch results; if (regex_match(text, results, pattern)) { for (auto it = results.begin(); it != results.end(); ++it) cout << *it << endl
-
C++中的explicit关键字实例浅析
在C++程序中很少有人去使用explicit关键字,不可否认,在平时的实践中确实很少能用的上.再说C++的功能强大,往往一个问题可以利用好几种C++特性去解决.但稍微留心一下就会发现现有的MFC库或者C++标准库中的相关类声明中explicit出现的频率是很高的.了解explicit关键字的功能及其使用对于我们阅读使用库是很有帮助的,而且在编写自己的代码时也可以尝试使用.既然C++语言提供这种特性,我想在有些时候这种特性将会非常有用. 按默认规定,只用传一个参数的构造函数也定义了一个隐式转换.举
-
C++中auto_ptr智能指针的用法详解
智能指针(auto_ptr) 这个名字听起来很酷是不是?其实auto_ptr 只是C++标准库提供的一个类模板,它与传统的new/delete控制内存相比有一定优势,但也有其局限.本文总结的8个问题足以涵盖auto_ptr的大部分内容. auto_ptr是什么? auto_ptr 是C++标准库提供的类模板,auto_ptr对象通过初始化指向由new创建的动态内存,它是这块内存的拥有者,一块内存不能同时被分给两个拥有者.当auto_ptr对象生命周期结束时,其析构函数会将auto_ptr对象拥有
随机推荐
- Angularjs基础知识及示例汇总
- return false,对阻止事件默认动作的一些测试代码
- VBS 生成不重复随机数代码[0-10]
- python 自动化将markdown文件转成html文件的方法
- JavaScript 直接操作本地文件的实现代码
- 利用.net代码实现发送邮件
- php解析url的三个示例
- Python中的连接符(+、+=)示例详解
- Django自定义分页与bootstrap分页结合
- C++/Php/Python/Shell 程序按行读取文件或者控制台的实现
- linux下vi命令介绍
- Python文本相似性计算之编辑距离详解
- 浅谈Java泛型通配符解决了泛型的许多诟病(如不能重载)
- 使用JSLint提高JS代码质量方法分享
- JS字符串截取函数实例
- PowerShell中使用正则表达式跨行匹配字符串的方法
- nodejs爬虫抓取数据之编码问题
- 基于C语言实现的扫雷游戏代码
- 比较简单实用的WEB安全设置总结
- 基于WTL中使用双缓冲避免闪烁的解决方法