auto自动类型推断,用于从初始表达式中推断出变量的类型. auto a;// 错误,没有初始化表达式,无法推断出a的类型 autoint a =10;// 错误,auto临时变量的语义在C++ 11中已不存在 auto a =10; auto c ='A'; auto s("hello"); vector<int> vctTemp; auto it = vctTemp.begin(); auto ptr =[](){ cout <<"hello wo…
今天搜狗笔试的一道选择题,原题给忘了,但记得所考的知识点.知识点很基础,但很容易忽视. 具体内容可参考C++ Primer. auto :变量取auto后,其所对应的类型 auto一般会忽视顶层const,保留底层const.但如果将引用类型设为const,则会保留相应的顶层const.下面是C++ Primer书 中的例题,我给出了相应的标注.个人觉得比较容易犯错的地方是对常量对象取地址和对引用加auto. int main() { /* int i = 0, &r = i; a…
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的类型是相同的. 另…
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类型推导] 1.使用auto的时候,编译器根据上下文情况,确定auto变量的真正类型.auto在C++14中可以作为函数的返回值,因此auto AddTest(int a, int b)的定义是没问题的. auto AddTest(int a, int b) { return a + b; } int main() { auto index = ; auto str = "abc"; auto ret = AddTest(,); std::cout << &qu…
一.decltype的意义 有时我们只想从表达式的类型推断出要定义的变量类型,但是不想用其值进行初始化的时候,C++11新标准引入了decltype类型说明符,它的作用是选择并返回操作数的数据类型,在此过程中,编译器分析表达式并得到它的类型,却不实际计算表达式的值. 二.decltype的用法 1)基本用法 int getInt(); int main() { int a = 1; decltype(a) b; //b为int类型. decltype(getInt()) c; //c为int…
auto 1.编译器通过分析表达式的类型来确定变量的类型,所以auto定义的变量必须有初始值. auto i=; //ok,i为整型 auto j; //error,定义时必须初始化. j=; 2.auto可以在一条语句中声明多个变量,但该语句中所有变量的初始值类型必须有一样. auto i=,*P=&i; //ok,i是整数,p是整型指针 auto a=,b=3.14; //error,a和b类型不一致 3.auto会忽略掉顶层const,同时底层const则会保留下来 ,&b=…
最近在恶补 C++ 知识的时候,学习到了一些 C++11 标准的新特性,利用这些新特性,我们能够更快地提高编程效率,从而实现我们的目标,在此特意记下学习过程中所学习到的一些东西,方便日后的回顾和复习. auto 关键字 在我们日常编程的时候,我们常常需要把表达式的值赋给变量,需要在声明变量的时候,我们必须清楚的知道变量是属于什么类型的.然而往往有些时候,我们做到这一点并非易事.为了解决这个问题, C++11 新标准就引入了 auto 类型说明符,通过使用 auto 关键字,我们就能让编译器替我们…