C++11 - 类型推导auto关键字
auto a = ;//a被推导为int auto b = );//b推导为int* auto const *c = &a;//
; auto int j; //error
auto k; //error
; auto *b = &a; //auto=int b==>int* auto c = &a //auto=int* c==>int*
auto &d = a; //auto=int d==>int& auto e = a; //auto=int e==>int
auto const f = a; //auto=int f==>int const auto g = f; //auto=int g==>int
auto const &h = a; //auto=int h==>int const& auto &i = h; //auto=int const i==>cosnt & auto *j = &h; //auto=int const j==>int const*
void foo(auto i){...}//error 无法推导为int
foo();
Dummy<int> d1; Dummy<auto> d2 = d1; //error
];
auto b[10] = a;//error
auto c = a; //ok,但是c推断为int*
auto &d = a; //ok,但是此时a代表的是数组整体不是首地址
#include <iostream> #include <typeinfo> #include <map> #include <string> using namespace std;
class A{ public: A():m_var(arg){} int get(void)const{return m_var;} void set(int arg){m_var = arg;} private: int m_var; };
class B{ public: B(char const *arg = ""):m_var(arg){} char const *get(void)const{return m_var;} void set(char const *arg){m_var = arg;} private: char const *m_var; };
//C++98版本 template<typename V,typename X> void foo(X const &x){ V var = x.get(); cout << var << endl; }
//C++11版本 template<typename X> void bar(X const &x){ auto var = x.get(); cout << var << endl; } int main(void) { A a(); B b("abcd"); foo<int>(a); //X会隐式推断 foo<char const*>(b); multimap<string,int> mm; mm.insert(make_pair()); mm.insert(make_pair()); mm.insert(make_pair()); mm.insert(make_pair()); mm.insert(make_pair()); mm.insert(make_pair()); //C++98版本 pair<multimap<string,int>::iterator,multimap<string,int>::iterator> its1 = mm.equal_range("zhangfei"); ; for (multimap<string,int>::iterator it=its1.first; it != its1.second; it++) sum1 += it->second; cout << sum1 << endl; //c++11 auto版本 auto its2 = mm.equal_range("zhangfei"); ; for(auto it = its2.first; it != its2.second; it++) sum2 += it->second; cout << sum2 << endl; ; }
C++11 - 类型推导auto关键字的更多相关文章
- C++11 类型推导auto
在C++11之前,auto关键字用来指定存储期.在新标准中,它的功能变为类型推断.auto现在成了一个类型的占位符,通知编译器去根据初始化代码推断所声明变量的真实类型.使用auto会拖慢c++效率吗? ...
- C++11特性:auto关键字
前言 本文的内容已经不新鲜了.关于auto,翻来覆去被人知道的都是这些东西,本文并没有提出新颖的auto用法. 本人原是痛恨博客一篇篇都是copy而来缺乏新意的探索,当然,本文不是copy而来,但发布 ...
- C++11类型推导
[C++11类型推导] auto 关键字.这会依据该初始化子(initializer)的具体类型产生参数: 除此之外,decltype 能够被用来在编译期决定一个表示式的类型. 参考:http://z ...
- C++11 自动推导auto
C++11 自动推导auto C++11中引入的auto主要有两种用途:自动类型推导和返回值占位. auto在C++98中的标识临时变量的语义,由于使用极少且多余,在C++11中已被删除.前后两个标准 ...
- C++11 类型推导decltype
我们之前使用的typeid运算符来查询一个变量的类型,这种类型查询在运行时进行.RTTI机制为每一个类型产生一个type_info类型的数据,而typeid查询返回的变量相应type_info数据,通 ...
- 【C++11新特性】 auto关键字
原文链接: http://blog.csdn.net/xiejingfa/article/details/50469045 熟悉脚本语言的人都知道,很多脚本语言都引入了“类型自动推断”技术:比如pyt ...
- C++ 11 auto关键字
熟悉脚本语言的人都知道,很多脚本语言都引入了“类型自动推断”技术:比如Python,可以直接声明变量,在运行时进行类型检查.随着C++11标准的发布,C++语言也引入了类型自动推断的功能,这就是我们今 ...
- C++ auto 关键字的使用
C++98 auto 早在C++98标准中就存在了auto关键字,那时的auto用于声明变量为自动变量,自动变量意为拥有自动的生命期,这是多余的,因为就算不使用auto声明,变量依旧拥有自动的生命期: ...
- auto关键字使用
auto类型变量--根据初始值推断真实的数据类型. 有些时候并不能很确定一个变量应该具备的数据类型,例如:将一个复杂表达式的值赋给某个变量,此时并不能很明显的确定这个值所具备的数据类型.此时auto关 ...
随机推荐
- 大型网站提速关键技术(页面静态化,memcached,MySql优化)(一)
一:关键技术介绍: 衡量是否为大型网站的要素: A:PV值(page views 页面浏览量) 访问量大: 带来的问题:1:流量大 -->解决方案:增加带宽,优化程序(视频和图片较浪费带宽,尽量 ...
- VMware Workstation 10.0 正式版官方简体中文下载(附序列号)
虚拟机界数一数二的王者软件VMWare Workstation 今日推出了最新的VMware Workstation 10.0 版本.该版本最大的更新是加入了简体中文语言,这意味着未来神马汉化包.中文 ...
- 淘宝购物车页面 智能搜索框Ajax异步加载数据
如果有朋友对本篇文章的一些知识点不了解的话,可以先阅读此篇文章.在这篇文章中,我大概介绍了一下构建淘宝购物车页面需要的基础知识. 这篇文章主要探讨的是智能搜索框Ajax异步加载数据.jQuery的社区 ...
- sed命令使用详解归纳
用法 sed [option] 'Address Command' yourfile e.g. sed -n '2,13p' lineuser #打印文件lineuser中第2~13行的内容,-n为o ...
- C# 管理员身份运行程序
在使用winform程序获取调用cmd命令提示符时,如果是win7以上的操作系统,会需要必须以管理员身份运行才会执行成功,否则无效果或提示错误. 比如在通过winform程序执行cmd命令时,某些情况 ...
- .net登录的一般模式
思路: 1.检查登录: private string CheckLogin(HttpContext context) { Model.TUser model = (Model.TUser)contex ...
- CSS3和jQuery实现的自定义美化Checkbox
效果图: 是不是比默认的好看多了,个人的审美观应该还是可以的. 当然我们可以在这里查看DEMO演示. 接下来我们一起来看看实现这款美化版Checkbox的源代码.主要思路是利用隐藏原来的checkbo ...
- 【C#进阶系列】29 混合线程同步构造
上一章讲了基元线程同步构造,而其它的线程同步构造都是基于这些基元线程同步构造的,并且一般都合并了用户模式和内核模式构造,我们称之为混合线程同步构造. 在没有线程竞争时,混合线程提供了基于用户模式构造所 ...
- luogg_java学习_13_GUI
本文为博主辛苦总结,希望自己以后返回来看的时候理解更深刻,也希望可以起到帮助初学者的作用. 转载请注明 出自 : luogg的博客园 谢谢配合! GUI 容器 JFrame , JPanel , JS ...
- 学习笔记:HTML5 Canvas绘制简单图形
HTML5 Canvas绘制简单图形 1.添加Canvas标签,添加id供js操作. <canvas id="mycanvas" height="700" ...