技术开发 频道

Symbian OS 中的Class命名约定(基本类型)

  【IT168 技术文档】Symbian OS定义了若干不同的class类型,每一种类型都具有不同的特性。Class的分类用于描述每种class对象的主要属性和行为,例如对象分配的位置(heap或stack),特别是它们的清除方式。每个class类型都有一系列规则,明确了如何创建和销毁该类的实例。

  为了便于class类型的识别,Symbian OS使用了一个简单的命名约定,即在class名称前加入前缀字母(通常为T、C、R或M)。虽然命名约定并不总是受到青睐,但是Symbian OS中这个命名约定非常容易理解,而且作用也很明显,它可以更便于你对class的行为,特别是对清除方式进行识别。对于一个class设计者而言,class 分类简化了问题复杂性。可以在Symbian OS中依据class的功能需求选择一个与之相对应的内置基本类型。选择合适的类型之后,就可以集中精力处理class的职能。同时,在使用一个并不熟知的class时,命名约定可以指点你如何进行一个对象的实例化,以及在确保发生意外情况时的安全的前提下使用,销毁对象的方式。

  1.1 基本类型

  本章我们将对每个class类型的主要特征进行阐述,不过,在开始之前让我们先回过头来了解一下基本类型的基础知识。Symbian OS采用typedefs的形式定义一系列内建类型,从而保证这些类型独立于编译器。在Symbian OS编程中应该使用它们来取代ANSI C++中的原始类型(native type)。

   TIntX和TUintX(X可以为8,16,32)分别表示8位、 16位和32位有符号或无符号整数。如果没有特殊原因,比如应用程序的尺寸优化或兼容性方面的问题,否则在一般情况下应该使用可以在所有32位整型中通用的非特定(non-specific)的TInt或TUint类型。

   TInt64 Symbian OS在8.0以前不提供对64位算术ARM的支持,因此TInt64是通过两个32位值来实现的。从Symbian 8.0起,TInt64和TUInt64将开始直接提供对64位的支持。

  TReal32 和TReal64(TReal等价于TReal64)为单精度和双精度浮点数提供支持,分别等价于float和double [1] 。Symbian OS中的浮点数计算要大大慢于整数,所以在不必要的情况下应尽量避免使用浮点数。

   TTextX (X可以为8,16),窄字符串,分别相当于8位和16位无符号整数。

  通过 typedef’d ”类型的定义,TAny*被有效替换成指向任意类型的指针,所以TAny*可以用在Void*的场合。TAny因而等价于void,但在Symbian OS中void仍然意为“空”,所以不要想当然的用TAny来替换原始类型void。因此,在Symbian OS中一个获取void*指针(指向任意对象)且返回类型为void(空)的函数的典型格式如下:

  void TypicalFunction(TAny* aPointerParameter);

  这是Symbian OS typedef替换原始类型的一个例外,因为void在表达“空”的含义时具有较好的编译器独立性

   TBool bool类型,因为一些历史原因TBool和int是等价的,相应的ETrue(=1),EFalse(=0)。记住,C++会把任何非零值视为true。基于这一原因,应避免TBool类型和ETrue直接进行比较。

   每一个TBool需要32位,对于一个bool值而言这是一个十分浪费的内存开销。因此,可以考虑使用位元组合(bitfields)来代替TBool来存储类中大量的bool数据。而TBool类型的32位可以用位元组合的形式保存32个bool值。当然这也意味着代码复杂性的提高,因而也就需要在提高代码复杂性和使用位元组合之间作一个权衡。

0
相关文章