C++中scope和lifetime的理解

(说明:这是看完C++ primer(第五版)P204的理解)


关于scope和lifetime这两个概念,有以下几个需keep in mind:

1.“In C++,names have scope, and objects have lifetimes.”

这两个概念讲的是不同东西的特点

“The scope of name is the part of the program's text in which that name is visible”;

"The lifetime of an boject is the time during the program's execution that the object exists."


2.scope 和 lifetime 对于一个变量在什么时候可用很重要。

一个变量var,在一个block里面被定义,则这个block“{}”就是变量var的scope,这个变量就被成为local variable。

但是,在一对{}范围内定义的local variable有不同的类型:

第一种:普通local(普通青年),他是个object。

              他只在这对{}内可以用,这对{}后面的操作看不见他了,对应于他的scope是这对{};

              更进一步的是,这对{}里面的东西执行完后,这个local就会被destroyed,对应的是他的lifetime也是这对{};

              如果后面又出现了这对{},那么将依照{}内的指令再次(重新)造出一个普通青年local,但是他已经不是当年那个他了。{}执行完后,这个local又被destroyed,以后每次出现{}都是一个轮回,就是一个个不断born,die,born,die的轮回。


第二种:文艺local(文艺青年),用static表明他的文艺态度。

              虽然local “static” object文艺一些,但是出了{},后面的操作也看不见他,他的scope还是这对{};

              但是,static的文艺之处在于,这对{}里面的东西执行完后,这个local会继续存活,直到整个program结束,这对应的是文艺local static的lifetime从一对{}延长到了整个program。

              对应于普通青年local的“生-死-生-死轮回”,文艺青年local static是“生------死”,他从born之后就一直好好活着,尽管出了{}还是没人记得他的存在,但见或不见,文艺青年static就在那里。


以上。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值