问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

c++的auto关键字有什么作用?

发布网友 发布时间:2022-04-23 20:30

我来回答

2个回答

热心网友 时间:2022-07-14 04:19

auto:用来声明自动变量。它是存储类型标识符,表明变量(自动)具有本地范围,块范围的变量声明(如for循环体内的变量声明)默认为auto存储类型。
其实大多普通声明方式声明的变量都是auto变量,他们不需要明确指定auto关键字,默认就是auto的了。auto变量在离开作用域是会变程序自动释放,不会发生内存溢出情况(除了包含指针的类)。使用auto变量的优势是不需要考虑去变量是否被释放,比较安全吧。
new:new是用来在堆上申请内存地址的关键字,他产生的变量不会自动释放,除非delete来手动释放,或者程序结束时由操作系统释放,使用new的优势是内存使用比较灵活,理论可以申请任意大小的内存区块(实际与操作系统有关),但这很容易产生问题,一不小心忘记释放对象,特别是在频繁调用的函数内创建的对象忘记释放时,会产生内存溢出,严重时导致程序出错,系统崩溃。new一般都是在类的定义中使用,结合delete可以使包含new出来对象的类也具有自带变量功能,这样就继承了两种方式的优势。
--------------------------------------------------------------
另外,最新的C++标准更新了auto关键字的功能
除了具有原有的含义外,还增加了一种类似其他高级语言的型别推导特性
使用auto来代替变量的类型,
前提是被明确类型的初始化变量初始化的,可以使用auto关键字
比如int i=10; auto a = i; //这样a也是int类型了
这在使用一些模板类的时候,对于减少冗赘的代码也很有用
---------------------------------------------------------------
另外一个题外话:auto的对应类型不是使用new出来的变量,而是static变量
static变量是程序接收的时候才释放对象的,但它不需要手动释放。
static如果在一个函数内申明,这每次进入这个函数时,还是使用第一次声明的变量,并且还保存的上次使用的值(auto变量这时函数结束是即释放了,再次调用这个函数是,有重新定义了一个新的变量)
static变量如果在结构和类中使用,这结构或类定义的一切对象,都将共享唯一static变量。

热心网友 时间:2022-07-14 04:19

C语言里面其实就已经有auto关键字了,只不过很少用到,当我们在C或者以前的C++中,auto关键字在自动存储类中声明变量,即具有局部生存期的变量,基本上可以被无视:
比如这个局部变量: int a = 100; auto int a = 100;并没有什么区别

但是在C++11标准里面auto已经有了新的含义,可以从声明的初始化表达式中可以推导出变量的类型。auto a = 100;和int a = 100;等价
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
橙子冷藏能保存多久 橙子会过期吗 新鲜橙子如何保存更久 橙子保鲜剂对人体有害吗 粒上皇开口熟栗120g*5袋(共600g)-详细介绍 三皇王板栗介绍 品牌榜:2024年板栗十大品牌排行榜 投票结果公布【新】 为什么来大姨妈胸会胀 少儿学什么舞蹈 青年学什么舞蹈好 千与千寻的影评400字 千与千寻的影评300字左右 c++11 auto为什么自己的不支持类成员变量类型推导? 千里千寻观后感400字 c语言中auto什么意思? 千与千寻的观后感? 千与千寻观后感 梦见和蛇有关是怎么回事啊? 芬组词可以租什么? 芬字可以组哪些词? 芬字能组什么词 芬可以组哪些词 芬能!组什么词 芬芳的芬可以组什么词 芬可以组什么词? 请问芬可以组什么词? 芬怎么组词语 芬芳的芬可以组啥词 沟帮子到铜二蒲的火车 芬芳的芬可以怎么组词 《千与千寻》观后感作文 《千与千寻》观后感 c++中使用auto关键字需要包含哪个头文件啊? 千与千寻的观后感300字。 java有像C艹11的auto或者C井的var那样的自动类型推断关键字吗? 千与千寻的观后感怎么写? 观千与千寻有感500字写出真情实感你学到了什么最深的感受是 C盘AUTO病毒无法查杀问题(急) 一篇《千与千寻》的观后感。求日文翻译版~~おねがいします! ps: 新手的说,悬赏没法高哈! auto fn = [](int *a) { for (int i = 0; i < 10; i++) cout << *a << endl; }; 千与千寻观后感 引议联结的联怎么写? 日本动画片电影《千与千寻》观后感 宫崎骏《千与千寻》读后感 汽车电子控制系统各名称代码(英文缩写) 《千与千寻》读后感 C++中for(auto i : v)是什么意思? 写一篇1500字的千与千寻的观后感 c++11中范围for语句遍历map和map的关键字可以是迭代器吗? 千与千寻观后感100字 汽车隔音品牌哪个牌子好