在C++11中,auto关键字被作为类型自动类型推导关键字 (1)基本用法 C++98:类型 变量名 = 初值; int i = 10; C++11:auto 变量名 = 初值; auto i = 3.14; 借助于auto关键字,可对变量进行隐式的类型定义,即由编译器在编译期间根据变量的初始化语句,自动推断出该变量的类型. auto a = ;//a被推导为int auto b = );//b推导为int* auto const *c = &a;// 在旧语法中,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的类型是相同的. 另
前言 本文的内容已经不新鲜了.关于auto,翻来覆去被人知道的都是这些东西,本文并没有提出新颖的auto用法. 本人原是痛恨博客一篇篇都是copy而来缺乏新意的探索,当然,本文不是copy而来,但发布这样一篇大家皆知的文章心里甚是惶恐. 本文对auto的内容加以整理,权当是自己的复习笔记了. C++98 auto 早在C++98标准中就存在了auto关键字,那时的auto用于声明变量为自动变量,自动变量意为拥有自动的生命期,这是多余的,因为就算不使用auto声明,变量依旧拥有自动的生命期: in
今天搜狗笔试的一道选择题,原题给忘了,但记得所考的知识点.知识点很基础,但很容易忽视. 具体内容可参考C++ Primer. auto :变量取auto后,其所对应的类型 auto一般会忽视顶层const,保留底层const.但如果将引用类型设为const,则会保留相应的顶层const.下面是C++ Primer书 中的例题,我给出了相应的标注.个人觉得比较容易犯错的地方是对常量对象取地址和对引用加auto. int main() { /* int i = 0, &r = i; a
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=
auto让编译器通过出初始值来推算变量的类型,显然,auto定义的变量必须有初始值: //由val1和val2相加的结果可以推断出item的类型 auto item = val1 + val2;//item初始化为val1和val2相加的结果 使用auto也能在一条语句中声明多个变量,因为一条语句中只能有一种基本数据类型,所以该语句中所有变量的初始基本数据类型都必须一样: auto i = , *p = &i;//正确:i是整数.p是整型指针 auto sz = , pi = 3.14;//错误
类型限定词有三个:const volatile restrict. const:一般也叫常量修饰符. 作用:是修饰变量,被修饰的变量就变成常量了,不能被二次修改了. const int a=12:a就成常量12了.就不能被再改了. 看看const都能修饰啥 const叫做类型限定词,是可以和前面说的存储类说明符一起使用的,const auto int a=12:const 能修饰局部变量,也能修饰全局变量,静态变量.谁都可以修饰. 左值指定const对象:赋值运算符"="左侧的这个a
auto 指定符(C++11 起) C++ C++ 语言 声明 对于变量,指定其类型将从其初始化器自动推导而出. 对于函数,指定其返回类型是尾随的返回类型或将从其 return 语句推导出 (C++14 起). 对于非类型模板形参,指定其类型将从参数推导出. (C++17 起) 语法 auto variable initializer (1) (C++11 起) auto function -> return type (2) (C++11 起) auto funct