Symbian操作系统中的类的分类

T类和C类
C类由CBase派生而来,并且在堆上分配。因此,当不再需要它们的时候,一定要进行清理。大部分的C类都有析构函数。
C类通常由一个指针引用,这个指针保存于拥有该类对象的某个类的一个成员变量中,也可能是使用它的类的一个成员变量,或者是一个自动变量。
对于任何C类,CBase仅有两个作用:

  • 零初始化,将所有的成员指针和句柄都初始化为0,保证清理安全。
  • 一个虚析构函数,可以从清理栈中正确地销毁从CBase派生的对象。


T类型的例子:

  • 任何内置类型(使用typedef定义)
  • 任何枚举类型
  • 不需要析构函数的类的类型

T类不拥有任何数据,因此它们不需要析构函数。不过,它们可以有指针,只要它们“使用”指针(对应“use-a”关系),而不是拥有指针(对应“has-a”关系)。
T类型通常作为自动变量分配,或者作为其他类的成员变量。
T类对象通常都是用逐元复制的方式来赋值。
因为C类型驻留在堆上,并且由指针引用,所以C类型是按引用传递的,也就是通过复制指针来传递。因而,C类型不需要拷贝构造函数或者赋值运算符。

R类
R对象本身一般不大。R类中的函数通常不改变R类本身的成员数据;相反,它给真正的资源所有者发送一条消息,标识使用句柄的真正对象,执行函数,并且发回一个结果。一般情况下,Close()函数释放资源,并把句柄值设置为0。
R类的一些特征:

  • 可以是自动变量或者类成员,也可以复制它们,而且这个复制可以像原件一样使用。
  • R类很少用指针来引用。它们通常按值或者按引用来传递。
  • R类拥有资源:即R类含有指向资源的指针,并且负责为资源分配和释放内存。虽然R类通常没有析构函数,但是它们却有一个Close()函数,其效果与析构函数类似。调用Close()函数两次是安全的。
  • R类零初始化它们的句柄值,使得直到初始化句柄后,才能使用这些函数。但是零初始化一定要在C++构造函数中显式进行。


对于使用R类对象的操作,一般的规则是:

  1. 首先创建一个R类对象,R类对象可以创建在栈上,也可以创建在堆上,分别对应T类、C类对象的使用
  2. 其次是调用R类的连接函数,在R类对象和管理资源的服务器建立连接
  3. 然后就可以调用R类访问资源的函数,向服务器发送操作请求了
  4. 最后,当使用完资源后,一定要断开和服务器之间的连接


M类
M类用于以一种可重用的方式给行为(而不是数据)打包。
使用M类作派生是Symbian OS中唯一允许的多重继承的类型。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值