C++ 11 新特性之 auto
来源:互联网 发布:淘宝退换货怎么操作 编辑:程序博客网 时间:2024/05/19 22:55
auto是C++ 11 的另一个新特性,其实大家可能之前就见过这个关键字,Java也有这个保留字,当然最早使用这个关键字的是asni c,但是在C语言,或者更早的C++ 98中auto很少被使用,且作用不大,在C中的变量,不是global的就是auto类型的。是一种默认的修饰符。所以在C++ 11 中就又重新定义了auto关键字,供大家来使用。
注意了 auto已经不是N年前的那个auto了,他穿越到现代了,哈哈。
总的来说auto关键字主要有两个用处,第一个就是自动类型推断,第二个是返回值占位符。废话不多说,先来看一段代码:
///////////////////////////////////auto的自动类型推断实例/////////////////////////////////// //使用auto初始化变量 auto a = 10; printf("a = %d",a); auto b("auto"); printf("b = %s",b); //使用auto消除冗长 map<string,vector<int> > _map; map<string, vector<int> >::const_iterator itr1 = _map.begin(); auto itr2 = _map.begin(); //使用auto声明lambda表达式 auto func = [](){printf("auto!!!");}; //执行func func(); /////////////////////////////////auto的返回值占位符的实例////////////////////////////////// //应用于模板 template <class T, class U> auto add(T t, U u) { auto v = t + u;
return v; }
代码中列举了一些auto的应用场景,可以用来初始化变量,可以用来消除冗长,可以应用于模板,在没有auto之前对于v的类型推断是非常麻烦的事情,而且容易出错,有了auto就相对容易了很多,模板函数的返回值也是用auto进行了站位。
好了,上面就是auto的基本使用方法,今天的课程。。。。。。。。当然还没完。上面讲了auto很多好用的地方,能帮我们简化我们的工作。大家是不是感觉自从有了auto,腰也不酸 了,腿也不疼了,一口气撸几十次也不眼冒金星了。哈哈,新特性的好处是显而易见的,但是随之而来的副作用也是多多的,例如在你使用auto的时候需要注意的问题。
哈哈,有得必有失,让我们耐心的看一下使用auto需要注意的事项,还是以代码来讲解,代码如下:
1,auto修饰的变量必须初始化
auto var; //错误,因为没有初始化
2,auto不能和其他类型修饰符联合使用(C++98或者C语音是允许这么做的)
auto int var = 0; //错误
3,auto不能修饰模板和参数
template< auto t> func(auto a){};//错误,auto不能修饰模板和参数
4,在堆上开辟的空间必须初始化
int *a = new auto();//错误,未初始化 int *b = new auto(3);//正确 auto *c = new auto(4);//正确 auto *d = new auto();//错误,未初始化
5,auto是一个占位符,并不是一种类型,所以不能用在对变量的强转
int a = 44; auto b = (auto)a;//错误 auto c = static_cast<auto>(a);//错误
6,定义一系列auto对象时,应该保持对象的类型相同
auto a = 0,b = 1,c = 2;//正确 auto d = 3,e = 4,f = 5.0;//错误
7,auto可以用 * ,& ,&&,const修饰
auto a = 12; auto *p1 = &a; auto &p2 = a; const auto b = a;
还有几条,基本上使用不到(我会告诉你,其实是我没记住吗?,哈哈。开玩笑了)。
auto就讲到这儿,下篇博客准备讲解一下C++ 11 的统一初始化方法,上班时间写的博客,擦,伤不起啊。
0 0
- C++ 11 新特性之 auto
- c++11 新特性之 auto关键字
- c++11新特性之auto
- C++11新特性之auto&decltype
- c++11新特性--auto
- 【C++11】新特性 之 auto的使用
- C++ 11新特性的用法之auto
- C++11新特性之auto的使用
- c++11新特性---auto 与 decltype
- 转载C++11新特性auto
- c++11新特性 auto的使用
- 【C++11新特性】 auto关键字
- c++11新特性--auto的使用
- 【C++11新特性】 auto关键字
- c++11的新特性---auto关键字
- C++ auto新特性
- c++ 11 0x11 新特性之auto 及 for的自动迭代
- C# 3.0新特性之自动属性(Auto-Implemented Properties)
- 使用phonegap插件启动另一个Android+Activity
- hadoop源码 - HDFS的文件操作流 写操作(客户端)
- ContentProvider-CP简析与流程(3)
- Android 恢复出厂设置流程分析
- iOS开发者申请发布证书-图文详解
- C++ 11 新特性之 auto
- virtualenv碰到的问题
- Android 高通代码编译指南
- eclipse报New package not yet registered with the system错误
- python3自动爬笑话
- C++文件操作之某些细节
- 原语以及PV操作
- 正则实例首字母大写
- ARC规则及使⽤