一级棒(Eachfun)
偷猫的个人主页
一级棒(Eachfun) - 读书笔记 - C++ Primer - 局部对象与静态局部对象
RSS订阅
局部对象与静态局部对象
发表时间:2006-08-04 23:48:00 关键词:C++,MFC,VC,Primer,编程,教程,读书

  本节首先向读者说明了“名字的作用域”和“对象的生命周期”这两个概念,不难,理解了就行了。前者是空间概念:指程序还处在代码阶段的时候这个名字的可见范围,后者是时间概念:指程序运行过程中对象的存在时间。
  函数的形参以及函数内部声明的对象都是局部对象,它们的作用域就是函数内部,但是它们的生命周期却未必是函数的执行过程。这看起来有点摸不着头脑,原因在于C++的函数中允许存在以关键字“static”声明的静态对象。
  也就是说,静态对象是这样一个对象:它的生命周期很长,可以跨越该函数的每次调用,哪怕该函数每24小时才调用一次,它也是全天候存在的。但是要想访问她,却只有函数正在执行的时候才行。
  签于以上特性,我专门写了两个测试函数,该函数试途返回局部对象的引用或指针:
int& GetInt()
{
  int t=3;
  return t;//警告
}

int* GetInt2()
{
  int t = 3;
  return &t;//警告
}
  以上两个警告产生的原因是函数返回了临时对象的引用或地址。但是如果将t的声明改成“static int t=3;”就不再显示警告。
  静态局部对象似乎为节约系统开销做了准备。不过我认为这个特性不应该被滥用。只有确实有必要让对象生命周期跨越多次调用时才应该把它声明为静态(比如统计函数被调用的次数)。否则将提高造成BUG的可能性,使“高效率”的程序成为空中楼阁。

本站特约顾问律师常州东晟律师事务所朱立律师(电话13915029670,QQ646146109)提醒您:
本站文章皆为作者原创,其它媒体(包括但不限于报刊、杂志、网站、电视、电台)未经作者书面许可严禁转载(或部分摘录)!
相关评论
发表评论
称呼:
QQ:
邮箱:
链接:
内容:
搜索: 百度搜索 Google搜索
Copyright©2000 - 2011 Eachfun.Com, All Rights Reserved 一级棒网络
备案号忘了带来
一级棒建站系统 http://www.eachfun.com 一级棒版权所有,未经许可不得商用!