C++11 auto和decltype关键字】的更多相关文章

转自: http://www.linuxidc.com/Linux/2015-02/113568.htm 今天要介绍C++11中两个重要的关键字,即auto和decltype.实际上在C++98中,已经就有了auto关键字,只不过在C++98中auto表示的是临时变量的语义, 而在C++11中auto表示自动类型推导,如下 auto关键字可以从表达式中推导出变量的类型,这样就大大简化了编程人员的工作.而且auto是在编译时对变量进行了类型推导,所以不会对程序的效率造成影响,另外auto也不会对编…
1.auto关键字 C++新标准引入auto关键词,此auto与之前C语言的auto意义已经不一样了. 这里的auto是修饰未知变量的类型,编译器会通过此变量的初始化自动推导变量的类型. 例如:auto i = 0 :编译器会通过“0”值,推导出变量i是整型. 如果初始值是引用,如: [cpp] view plain copy   int i = 4; int &ri = i; auto ai = ri; 通过应用是利用了ri指向的对象,所以ai的类型是int.也就是ai与i的类型是相同的. 另…
转自: here 一. auto简介 编程时候常常需要把表达式的值付给变量,需要在声明变量的时候清楚的知道变量是什么类型.然而做到这一点并非那么容易(特别是模板中),有时候根本做不到.为了解决这个问题,C++11新标准就引入了auto类型说明符,用它就能让编译器替我们去分析表达式所属的类型.和原来那些只对应某种特定的类型说明符(例如 int)不同.auto 让编译器通过初始值来进行类型推演.从而获得定义变量的类型,所以说 auto 定义的变量必须有初始值. //由val_1 和val_2相加的结…
decltype简介 我们之前使用的typeid运算符来查询一个变量的类型,这种类型查询在运行时进行.RTTI机制为每一个类型产生一个type_info类型的数据,而typeid查询返回的变量相应type_info数据,通过name成员函数返回类型的名称.同时在C++11中typeid还提供了hash_code这个成员函数,用于返回类型的唯一哈希值.RTTI会导致运行时效率降低,且在泛型编程中,我们更需要的是编译时就要确定类型,RTTI并无法满足这样的要求.编译时类型推导的出现正是为了泛型编程,…
VS2015下测试: decltype: class Foo {}; int &func_int_r(void) { int i = 0; return i; }; int &&func_int_rr(void) { return 0; }; int func_int(void) { return 0; }; const int &func_cint_r(void) { int i = 0; return i; }; const int &&func_cin…
c++11中引入了auto和decltype关键字实现类型推导,通过这两个关键字不仅能够方便的获取复杂的类型,而且还能简化书写,提高编码效率.     auto和decltype的类型推导都是编译器在编译的时候完成的,auto是通过定义auto变量时候给出的表达式的值推导出实际类型,并且在声明auto变量时必须马上初始化:decltype通过表达式的值推导出实际的类型,但是可以只声明变量,而不赋值. auto类型推导 1. auto推导 auto x = 5; //被编译器推导为int类型 au…
1.auto auto是旧关键字,在C++11之前,auto用来声明自动变量,表明变量存储在栈,很少使用.在C++11中被赋予了新的含义和作用,用于类型推断. auto关键字主要有两种用途:一是在变量定义时根据初始化表达式自动推断该变量的类型,二是在声明或定义函数时作为函数返回值的占位符,此时需要与关键字decltype连用. 1.1用法示例 (1)auto用于推断变量类型示例. auto i = 42; //i is an int auto l = 42LL; //l is an long l…
一.背景 使用typedef或者using定义类型别名是非常常见的手段,在c++里面,有时为了封装性,模块性等原因还会在某一个namespace或者class内部定义类型别名. 最近在写c++代码的时候,有实现一个模板类,说实话,虽然用c++用了好多年了,但还真没花多少时间去研究模板,因为我始终觉得,做项目,开发软件,不是为了炫技,我也不认为会玩儿模板就是牛人大神了,最主要的是把握好三个“用”就好了,这三个用分别是:实用,适用,够用. 言归正传,这次实用模板类,也会用到在模板类里面实用typed…
在C++11标准中,auto作为关键字被引入,可以用来自动推导变量类型,auto可以用于定义变量,函数返回值,lambda表达式等,在定义变量时可以使用auto来代替具体类型,编译器根据变量初始化表达式推导出变量的类型.同时还引入了decltype关键字,用于推导表达式的类型,decltype与auto的不同之处在于,decltype关键字推导出的类型和表达式的类型完全一致,包括const与引用等信息.decltype关键字可以用于推导变量.表达式和函数返回值的类型.在推导变量类型时,可以使用d…
Cocos 3.x 用了大量的C++ 11 的东西,所以作为一个C++忠实粉丝,有必要对C++ 11进行一个系统的学习. 使用C++11之前,一定要注意自己使用的编译器对C++11的支持情况,有些编译器并不是完全支持,比如我正在使用的vs2012.这里是msdn里面VS各版本对C++ 11 的支持 对 C++11 功能的支持(现代 C++) 1.auto auto这个关键字C++原先就有,用来指定存储器.因为很少有人去用这个东西,所以在C++11中就把原有的auto功能给废弃掉了,而变成了现在的…