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关 ...
随机推荐
- Nodejs之MEAN栈开发(四)---- form验证及图片上传
这一节增加推荐图书的提交和删除功能,来学习node的form提交以及node的图片上传功能.开始之前需要源码同学可以先在git上fork:https://github.com/stoneniqiu/R ...
- RECONFIGURE语句会清空计划缓存么?
几个星期前,有个网友问我一个非常有趣的问题:RECONFIGURE语句会清空计划缓存么?通常我对这个问题的答案是简单的是,但慢慢的我找出了真正的答案是“看情况啦”.我们来看下它,为什么“它看情况”. ...
- [AngularJS] AngularJS系列(5) 中级篇之动画
目录 CSS定义 JS定义 ng动画实际帮我们在状态切换的时候 添加特定的样式 从而实现动画效果. 一般我们会通过C3来实现具体的动画. CSS定义 ng-if 图(实际上,图并不能展现出什么): H ...
- SQL Server时间粒度系列----第9节时间粒度示例演示
本文目录列表: 1.准备测试数据 2.向测试数据表添加相关时间粒度字段列 3.基于日月季年统计汇总的演示 4.总结语 5.参考清单列表 准备测试数据 为了提供不同时间粒度示例的演示,就需要测试 ...
- 关于SQL储存过程中输出多行数据
declare @num1 int --为符合条件的总行数 select @num1=COUNT(1) from cardInfo where openDate between @ ...
- 委托 lambda表达式浅显理解
方法不能跟变量一样当参数传递,怎么办,C#定义了委托,就可以把方法当变量一样传递了,为了简单,匿名方法传递,省得再声明方法了:再简单,lambda表达式传递,比匿名方法更直观. public dele ...
- 执行后台任务的利器——Hangfire
今年1月31日,在微软的MVP 2015社区大讲堂上,我给大家分享了一个演讲:在ASP.NET应用中执行后台任务.其中介绍了三种技术的应用:QueueBackgroundWorkItem.Hangfi ...
- 【转】c#获取网页地址参数
假设当前页完整地址为:http://www.jbxue.com/aaa/bbb.aspx?id=5&name=kelli则: "http://"是协议名"www. ...
- Myeclipse启动报错: Invalid 'log4jConfigLocation' parameter
java.lang.IllegalArgumentException: Invalid 'log4jConfigLocation' parameter: class path resource [lo ...
- (原)3.1 Zookeeper应用 - Master选举
本文为原创文章,转载请注明出处,谢谢 Master 选举 1.原理 服务器争抢创建标志为Master的临时节点 服务器监听标志为Master的临时节点,当监测到节点删除事件后展开新的一轮争抢 某个服务 ...