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

系统
Symbian OS定义了若干不同的class类型,每一种类型都具有不同的特性。Class的分类用于描述每种class对象的主要属性和行为,例如对象分配的位置(heap或stack),特别是它们的清除方式。每个class类型都有一系列规则,明确了如何创建和销毁该类的实例。
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值。当然这也意味着代码复杂性的提高,因而也就需要在提高代码复杂性和使用位元组合之间作一个权衡。

【编辑推荐】

  1. Symbian每6个月发布一款新开源操作系统
  2. 微软建WindowsMarketplace 完善智能机平台
  3. 大力模仿Android 传微软WM6.5可装插件
责任编辑:庞桂玉 来源: it168
相关推荐

2009-04-12 09:11:03

Symbian诺基亚移动OS

2009-04-12 09:13:51

Symbian诺基亚移动OS

2009-04-12 09:12:34

Symbian诺基亚移动OS

2010-03-05 11:53:20

Python命名约定

2009-07-21 09:31:00

Scala基本类型文本

2023-08-07 08:52:53

Vue组件Props 命名

2010-04-23 15:07:07

Oracle数字

2010-03-05 10:04:38

Python运算符

2019-09-02 09:48:39

Redis数据结构对象

2019-12-16 10:13:16

Python字符串数据

2009-12-16 16:24:00

Ruby on Rai

2009-08-19 15:24:30

.NET命名规范

2022-02-23 09:03:29

JavaScript开发命名约定

2020-11-18 09:44:49

Java命名约定

2020-10-20 09:27:48

Python开发数据类型

2009-11-10 15:36:24

VB.NET命名约定

2021-05-16 19:23:11

引用类型包装

2010-07-12 09:43:38

Symbian开发

2010-08-05 14:11:34

连接DB2

2022-09-09 16:06:15

API开发者命名API
点赞
收藏

51CTO技术栈公众号