異常處理與資源管理_第1頁
異常處理與資源管理_第2頁
異常處理與資源管理_第3頁
異常處理與資源管理_第4頁
異常處理與資源管理_第5頁
已閱讀5頁,還剩14頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認(rèn)領(lǐng)

文檔簡介

1、Symbian OS C+基礎(chǔ)主要內(nèi)容vSymbian 中的資源管理概述v清除棧v異常退出v類的兩階段構(gòu)造v動態(tài)數(shù)組Symbian中的資源管理概述v三種資源管理方式清除棧異常退出類的兩階段構(gòu)造清除棧v清除棧機制能夠減少程序異常帶來的內(nèi)存泄漏 清除棧v使用清除棧使用清除棧的基本步驟:(1)創(chuàng)建對象(2)把對象指針壓棧(3)使用對象提供的有可能異常退出的函數(shù),也就函數(shù)名后綴有“L”的(4)出棧(5)根據(jù)情況決定是否釋放對象 清除棧v使用清除棧示例CMyObject* obj1=new (ELeave) CMyObject;CleanupStack:Push(obj1);obj1-UseL();Cl

2、eanupStack:Pop();delete obj1;清除棧v清除棧的特殊用法 用法一CMyObject* obj1=new (ELeave) CMyObject;CleanupStack:Push(obj1);obj1-UseL();CleanupStack:PopAndDestroy(); 用法二template void CleanupClosePushL(T& aRef);template void CleanupReleasePushL(T& aRef);template void CleanupDeletePushL(T* aPtr);異常退出函數(shù)v函數(shù)帶有后綴

3、“L”class CExam0303NewGuiAppUi : public CAknAppUipublic:void ConstructL();CExam0303NewGuiAppUi();virtual CExam0303NewGuiAppUi();private:void HandleCommandL(TInt aCommand);void HandleStatusPaneSizeChange();CArrayFix* HelpContextL() const;private:CExam0303NewGuiAppView* iAppView;異常退出v在程序中拋出異常CObject* p

4、Object=new CObject();if(!pObject)User:Leave(KErrNoMemory);v拋出異常的方法static void Leave(TInt aReason);static void LeaveNoMemory();static TInt LeaveIfError(TInt aReason);static TAny* LeaveIfNull(TAny* aPtr);異常退出v捕獲異常的方法 TRAP TRAPDv示例1void DoStart()TInt err;TRAPD(err, MainL();if (err). . /處理異常異常退出v示例2void

5、 DoStart()TRAPD(err, MainL();if (err). . /處理異常類的兩階段構(gòu)造v普遍C+類的創(chuàng)建及使用CMyClass* pMyClass=new CMyClass;char* pName=pMyClass-GetName();delete pMyClass;類的兩階段構(gòu)造v兩階段構(gòu)造的意義第一階段是安全的第二階段做復(fù)雜的初始化類的兩階段構(gòu)造v靜態(tài)方法NewLC和NewLCMySymbianClass* CMySymbianClass:NewLC()CMySymbianClass* self = new (ELeave)CMySymbianClass();Clean

6、upStack:PushL(self);self-ConstructL();return self;CMySymbianClass* CMySymbianClass:NewL()CMySymbianClass* self=CMySymbianClass:NewLC();CleanupStack:Pop(); / self;return self;類的兩階段構(gòu)造v二階段構(gòu)造函數(shù)Void ConstructL()*iBuf=HBufC:NewL(1000);類的二階段構(gòu)造vSymbian OS C+類的用法 用法一:CMySymbianClass* pMyClass = CMySymbianCla

7、ss:NewLC()pMyClass-UseL(); /使用類對象UseOtherFunctionL(); CleanupStack:PopAndDestroy();類的二階段構(gòu)造vSymbian OS C+類的用法 用法二:CMySymbianClass* pMyClass = CMySymbianClass:NewL()pMyClass-Use (); /使用類對象UseOtherFunction(); delete pMyClass;類的二階段構(gòu)造v二階段類的簡化用法 類的聲明class CMySymbianClass2 : public CBasepublic:CMySymbianClass();void ConstructL();CMySymbianClass();public:TInt GetSum();private:TInt m_nSum;類的二階段構(gòu)造v二階段類的簡化用法類的創(chuàng)建和使用CMySymbianClass2* pMySymbianClass2

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論