·天新网首页·加入收藏·设为首页·网站导航
数码笔记本手机摄像机相机MP3MP4GPS
硬件台式机网络服务器主板CPU硬盘显卡
办公投影打印传真
家电电视影院空调
游戏网游单机动漫
汽车新车购车试驾
下载驱动源码
学院开发设计
考试公务员高考考研
业界互联网通信探索
symbian类命名中的T,C,R,M
http://www.21tx.com 2009年11月25日 天极网

  T, C, R, M classes

  Symbian使用如下的命名规则指出一些类的基本属性

  T

  简单类,类似于typedef。T类没有构造器和销毁函数,他们可以在堆栈分配。

  C

  C类具有构造器和销毁器,同时继承自CBase。在堆栈中往往实例是需要被申请的。

  R

  R类是在别处运行对象(典型的是一个server运行在其他的线程当中)的代理。R类对象有初始化和结束的处理函数。

  M

  Mixin类。这是纯interface类。也可以叫具有纯虚函数的抽象类(并没有被实现)

  一些早期的Symbian OS也使用S前缀进行结构定义。这样的前缀现在被取消同时被T取代。

  E前缀被使用在枚举值(ETrue, EFalse). K被用于常量(KErrNone).

  T-Classes

  T类一般被用做integers, Booleans 和一些其他的简单结构体

  TInt i; // a counter

  TBool res=ETrue; // a boolean value

  TPoint origin; // a point object having two coordinates TInt X and TInt Y

  C-Classes

  C类继承自Cbase. 一个C对象在栈顶通过new操作符被申请。这个操作符被Symbian new(Eleave)重载。to allow a memory protection mechanism called two phase construction :

  Class CMyClass : public CBase

  {

  …

  }

  CMyClass *myObject = new(ELeave) CMyClass ;

  …

  delete myObject;

  R-Classes

  R类是在别处运行对象(典型的是一个server运行在其他的线程当中)的代理。R类对象有初始化(generally called Create, Open, ...)和结束(Delete, Close,...)的处理函数。

  RTimer myTimer;

  myTimer.CreateLocal();

  …

  myTimer.Delete();

  另外:

  T类并不仅仅是一个typedef. 一般来说,当你有一个’flat’ class时你应该使用T类。FLAT的意思是你的类并不具有和维护外部申请的对象的功能。例如,他没有指针数据成员。即使他有,也不负责指针对象的删除。例如:

  class TFlatClass

  {

  public:

  // constructor

  TFlatClass( TInt aSomething );

  public:

  // data members

  TInt iSomething;

  TPtrC iString;

  };

  从上面的例子可以刊出,一个T类可以有构造器(或更多)。实际上也应该有销毁器。但是他有必要要进行外部申请对象的维护么?非常重要一点是,T类一般来说都很小。这也是为什么鼓励大家在堆栈中使用的原因。

  C类:首先,CBase构造函数处理你数据函数成员的初始化工作(归零)。也就是说,你不必为继承自CBase类的所有的数据成员指定0或NULL。因为这些是自动完成的。另外,CBase有一个非常重要的虚拟的销毁函数,因为如果一个client有一个指向你对象的CBase *指针并且删除那个对象,那么适当的销毁函数会被调用。例如:

  class CYourCBaseObject : public CBase

  {

  // ...

  }

  void AnyObject::AnyFunctionL()

  {

  CBase* obj = new (ELeave) CYourCBaseObject;

  delete obj;

  }

  你可以看到我们通过CBase*指向被新申请的对象,但是在销毁中会调用合适的析构函数。

  任何的Symbian OS程序员都被鼓励在堆栈中申请内存,当数据的大小达到一定的值的时候。例如,如果你知道一个任意长度的字符串可能达到(但不会超过)500bytes,那不要给堆栈增加负担,比如使用an TBuf<500>变量,而应该使用HBufC代替。

  最后,R类通常被client-server通讯所使用。标准的例子是RFile, RFs, RSocket.虽然不是绝对的.

上一篇: Symbian OS编码诀窍
下一篇: Symbian开发概述

关于我们 | 联系我们 | 加入我们 | 广告服务 | 投诉意见 | 网站导航
Copyright © 2000-2011 21tx.com, All Rights Reserved.
晨新科技 版权所有 Created by TXSite.net