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