生存空间和生命周期以及多载化函式课件.ppt
- 【下载声明】
1. 本站全部试题类文档,若标题没写含答案,则无答案;标题注明含答案的文档,主观题也可能无答案。请谨慎下单,一旦售出,不予退换。
2. 本站全部PPT文档均不含视频和音频,PPT中出现的音频或视频标识(或文字)仅表示流程,实际无音频或视频文件。请谨慎下单,一旦售出,不予退换。
3. 本页资料《生存空间和生命周期以及多载化函式课件.ppt》由用户(三亚风情)主动上传,其收益全归该用户。163文库仅提供信息存储空间,仅对该用户上传内容的表现方式做保护处理,对上传内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知163文库(点击联系客服),我们立即给予删除!
4. 请根据预览情况,自愿下载本文。本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
5. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007及以上版本和PDF阅读器,压缩文件请下载最新的WinRAR软件解压。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 生存 空间 生命周期 以及 多载化函式 课件
- 资源描述:
-
1、2022/8/5生存空間和生命週期以及多載化函式1生存空間和生命週期以及多載化函式C+Primer 第三版中文版Chap 8.18.4Chap 92022/8/5生存空間和生命週期以及多載化函式2C+中有關宣告(declarations)的問題n宣告動作所導入的符號名稱可以在何處使用?n提示:C+scope(生存空間)包括 global scope,local scope,namespace scope.n程式何時可以安全使用object或函式?n提示:object的生命週期nglobal:能夠維持生命到整個程式結束為止.nlocal:只能在程式的部分期間維持生命.n動態配置:期生命由程式員控
2、制.2022/8/5生存空間和生命週期以及多載化函式3Local Scope(區域性生存空間)n所謂local scope是程式本文的部分範圍.n位於一個函式區塊之內.n每個函式都表現有各自的local scope.n函式中每一個複合敘述句(或說區塊,block)也表現有它自己的一個local scope.nlocal block scopes可以巢狀出現.2022/8/5生存空間和生命週期以及多載化函式4Local Scope範例int binarySearch(int val,)/binarySearchs scope startint a;/scope包含binarySearch,whi
3、le,if.while()/while loop scope startint b;/scope 包含 while,if.if()/if statement scope startint c;/scope 包含 if./if statement scope end/while loop scope end/binarySearchs scope end2022/8/5生存空間和生命週期以及多載化函式5全域物件(Global Objects)&全域函式(Global Functions)n函式如果宣告在於global scope中,便是一個全域函式.n變數如果宣告在於global scope中,
4、便是一個全域物件.n全域物件是整個程式執行期間都存在的一個物體,生命期從程式啟動開始,直到程式結束.n全域物件和non-inline全域函式在程式中都只能定義一次.2022/8/5生存空間和生命週期以及多載化函式6extern宣告式n讓多個.cpp檔案組成的程式能使用同一個object.n寫法:extern 資料型別 物件名稱;n使用extern並不會再額外配置記憶體.n可放置於表頭檔中.n範例程式:ExternDemo.cpp2022/8/5生存空間和生命週期以及多載化函式7Local Objects(區域性物件)nAutomatic Objects(自動配置與釋放的襪件)nRegister
5、 Automatic Objects(放在暫存器裡的物件)nStatic Local Objects(靜態的區域性物件)n此三類皆位於Local Scope.2022/8/5生存空間和生命週期以及多載化函式8Automatic Objects-1n生命週期從宣告之後一直到scope結束.n例如:void main()int a;int b;b的生命週期a的生命週期2022/8/5生存空間和生命週期以及多載化函式9Automatic Objects-2n承上頁,所以“”可以看做內含釋放所有非由 new 關鍵字建立的object的記憶體的程式碼.n以下是危險的做法:int*trouble()int
6、 res;.return&res;/危險的,因為res的記憶體已經被釋放了.2022/8/5生存空間和生命週期以及多載化函式10Register Automatic Objectsn對於的automatic objects,可以用關鍵字register修飾他們.n常見的候選者為迴圈中的counterfor(register int i=0;i10000;i+)nregister是對編譯器的一種.n此種object會使用機器暫存器(CPU)來儲存資料,如果不能夠,就使用記憶體儲存.2022/8/5生存空間和生命週期以及多載化函式11Static Local Objects n生命週期同globa
7、l object(整個程式期間)nobject可見度受限於local scope.n初值初始化動作僅做第一次.n範例程式:LocalObjectDemo.cppn如果宣告時沒有給定初值,則內定初值為0.n驗證程式:LocalObjectInit.cpp2022/8/5生存空間和生命週期以及多載化函式12動態配置的物件n使用指標和 new,delete 算式.n程式不會自動釋放利用new配置的記憶體,程式設計師必須自行用delete釋放.n如果 delete 的運算元為0(NULL)的話,就不會執行釋放記憶體的動作.n所以在指標所指的object被刪除之後,把指標設為0是一個好習慣.n驗證程式:
展开阅读全文