C++-关键字:auto
创始人
2024-03-16 18:19:03
0

C++98 auto

早在C++98标准中就存在了auto关键字,那时的auto用于声明变量为自动变量,自动变量意为拥有自动的生命期,这是多余的,因为就算不使用auto声明,变量依旧拥有自动的生命期:

int a =10 ;  //拥有自动生命期
auto int b = 20 ;//拥有自动生命期
static int c = 30 ;//延长了生命期

C++98中的auto多余且极少使用,C++11已经删除了这一用法,取而代之的是全新的auto:变量的自动类型推断。

C++11 auto

auto可以在声明变量的时候根据变量初始值的类型自动为此变量选择匹配的类型,类似的关键字还有decltype。举个例子:

int a = 10;
auto au_a = a;//自动类型推断,au_a为int类型
cout << typeid(au_a).name() << endl;

typeid运算符可以输出变量的类型。程序的运行结果输出了

int

这种用法就类似于C#或java中的var关键字。auto的自动类型推断发生在编译期,所以使用auto并不会造成程序运行时效率的降低。而是否会造成编译期的时间消耗,我认为是不会的,在未使用auto时,编译器也需要得知右操作数的类型,再与左操作数的类型进行比较,检查是否可以发生相应的转化,是否需要进行隐式类型转换。
 

auto的用法

上面举的这个例子很简单,在真正编程的时候也不建议这样来使用auto,直接写出变量的类型更加清晰易懂。下面列举auto关键字的正确用法。

用于代替冗长复杂、变量使用范围专一的变量声明。

想象一下在没有auto的时候,我们操作标准库时经常需要这样:


#include
#include
int main()
{std::vector vs;for (std::vector::iterator i = vs.begin(); i != vs.end(); i++){//...}
}

这样看代码写代码实在烦得很。有人可能会说为何不直接使用using namespace std,这样代码可以短一点。实际上这不是该建议的方法(C++Primer对此有相关叙述)。使用auto能简化代码:


#include
#include
int main()
{std::vector vs;for (auto i = vs.begin(); i != vs.end(); i++){//..}
}

for循环中的i将在编译时自动推导其类型,而不用我们显式去定义那长长的一串。

C++ auto关键字_逝水-无痕的博客-CSDN博客

相关内容

热门资讯

低空经济持续获政策支持 业绩有... 人民财讯12月26日电,低空经济作为国家战略性新兴产业,持续受到政策支持。 作为万亿级产业,低空经济...
【深圳特区报】从“制度设计图”... 近日,深圳市财政局召开“数据资产全过程管理试点工作培训暨经验交流会”(以下简称“培训交流会”),围绕...
原创 重... 在情感的漩涡中,我们常常看到悲剧的发生。近日,一则令人心痛的消息震动了整个网络——重庆一男子因感情纠...
极氪回应明年车辆质保权益等问题... 【CNMO科技消息】近日,极氪汽车发布《极氪零距离 | 你问我答》公告,就用户关注的车辆质保、免费充...
关于海南育儿补贴制度实施热点问... 户籍刚迁入海南的婴幼儿是否能享受育儿补贴;如何快速了解补贴申领流程……12月25日,海南省新闻办公室...
宋朝的中介制度 走进《清明上河图》中汴河两岸喧嚷的市集,除了林立的店铺与往来的舟车,还有一种身影穿梭其间——他们并非...
《西安市地下水条例》《西安历史... 央广网西安12月26日消息(记者侯凯奇)12月25日,西安市人大常委会召开新闻发布会,正式公布《西安...
三部门发文完善幼儿园收费政策 ... 近年来,人民群众对适龄儿童“上得起”“上好园”的诉求越来越强烈,幼儿园收费政策需要与时俱进。近日,为...
下一阶段货币政策如何发力?央行... 中国网财经12月26日讯 近日中国人民银行货币政策委员会召开2025年第四季度例会,分析国内外经济金...
跨省盗杀家犬 涉嫌犯罪终落网 山西晚报·山河+讯(记者 辛戈)套牌的汽车、70余支已经装填或待用的毒针、50余颗用剧毒物质自制的药...