Symbian OS 中的Class命名約定(基本類型)
為了便于class類型的識(shí)別,Symbian OS使用了一個(gè)簡(jiǎn)單的命名約定,即在class名稱前加入前綴字母(通常為T(mén)、C、R或M)。雖然命名約定并不總是受到青睞,但是Symbian OS中這個(gè)命名約定非常容易理解,而且作用也很明顯,它可以更便于你對(duì)class的行為,特別是對(duì)清除方式進(jìn)行識(shí)別。對(duì)于一個(gè)class設(shè)計(jì)者而言,class 分類簡(jiǎn)化了問(wèn)題復(fù)雜性??梢栽赟ymbian OS中依據(jù)class的功能需求選擇一個(gè)與之相對(duì)應(yīng)的內(nèi)置基本類型。選擇合適的類型之后,就可以集中精力處理class的職能。同時(shí),在使用一個(gè)并不熟知的class時(shí),命名約定可以指點(diǎn)你如何進(jìn)行一個(gè)對(duì)象的實(shí)例化,以及在確保發(fā)生意外情況時(shí)的安全的前提下使用,銷毀對(duì)象的方式。
1.1 基本類型
本章我們將對(duì)每個(gè)class類型的主要特征進(jìn)行闡述,不過(guò),在開(kāi)始之前讓我們先回過(guò)頭來(lái)了解一下基本類型的基礎(chǔ)知識(shí)。Symbian OS采用typedefs的形式定義一系列內(nèi)建類型,從而保證這些類型獨(dú)立于編譯器。在Symbian OS編程中應(yīng)該使用它們來(lái)取代ANSI C++中的原始類型(native type)。
TIntX和TUintX(X可以為8,16,32)分別表示8位、 16位和32位有符號(hào)或無(wú)符號(hào)整數(shù)。如果沒(méi)有特殊原因,比如應(yīng)用程序的尺寸優(yōu)化或兼容性方面的問(wèn)題,否則在一般情況下應(yīng)該使用可以在所有32位整型中通用的非特定(non-specific)的TInt或TUint類型。
TInt64 Symbian OS在8.0以前不提供對(duì)64位算術(shù)ARM的支持,因此TInt64是通過(guò)兩個(gè)32位值來(lái)實(shí)現(xiàn)的。從Symbian 8.0起,TInt64和TUInt64將開(kāi)始直接提供對(duì)64位的支持。
TReal32 和TReal64(TReal等價(jià)于TReal64)為單精度和雙精度浮點(diǎn)數(shù)提供支持,分別等價(jià)于float和double [1] 。Symbian OS中的浮點(diǎn)數(shù)計(jì)算要大大慢于整數(shù),所以在不必要的情況下應(yīng)盡量避免使用浮點(diǎn)數(shù)。
TTextX (X可以為8,16),窄字符串,分別相當(dāng)于8位和16位無(wú)符號(hào)整數(shù)。
通過(guò) typedef’d ”類型的定義,TAny*被有效替換成指向任意類型的指針,所以TAny*可以用在Void*的場(chǎng)合。TAny因而等價(jià)于void,但在Symbian OS中void仍然意為“空”,所以不要想當(dāng)然的用TAny來(lái)替換原始類型void。因此,在Symbian OS中一個(gè)獲取void*指針(指向任意對(duì)象)且返回類型為void(空)的函數(shù)的典型格式如下:
void TypicalFunction(TAny* aPointerParameter);
這是Symbian OS typedef替換原始類型的一個(gè)例外,因?yàn)関oid在表達(dá)“空”的含義時(shí)具有較好的編譯器獨(dú)立性
TBool bool類型,因?yàn)橐恍v史原因TBool和int是等價(jià)的,相應(yīng)的ETrue(=1),EFalse(=0)。記住,C++會(huì)把任何非零值視為true。基于這一原因,應(yīng)避免TBool類型和ETrue直接進(jìn)行比較。
每一個(gè)TBool需要32位,對(duì)于一個(gè)bool值而言這是一個(gè)十分浪費(fèi)的內(nèi)存開(kāi)銷。因此,可以考慮使用位元組合(bitfields)來(lái)代替TBool來(lái)存儲(chǔ)類中大量的bool數(shù)據(jù)。而TBool類型的32位可以用位元組合的形式保存32個(gè)bool值。當(dāng)然這也意味著代碼復(fù)雜性的提高,因而也就需要在提高代碼復(fù)雜性和使用位元組合之間作一個(gè)權(quán)衡。
【編輯推薦】