原文出自:http://discussion.forum.nokia.com/forum/showthread.php?t=68969
译自Developer Library » Symbian OS Guide » Essential idioms » Class types
概要
Symbian OS上的应用程序使用4种常用的类,它们是:
以T开头的值类,这种类不拥有任何外部对象,只是通过指针直接引用或通过句柄间接引用外部对象。
以C开头的基于堆分配的类,这种类全部是从CBase派生过来的。
以R开头的资源类,R类对象包含其它位置拥有资源的句柄。
以M开头的接口类,这种类定义了接口但需要派生类实现。
这些类与清除机制的需求相关,具体细节请参考SDK(Developer Library » Symbian OS Guide » C++ API guide » Base » Memory Management » Using Cleanup Support » Cleanup Stack Basics » Cleanup requirements)。
值类型:T类
最基本的类是值类型,它们的名字以T开头。
T类包含有它们的值,但这它们不拥有任何外部对象,只是通过指针直接引用或通过句柄间接引用外部对象。
T类可以在栈上分配(C++自动变量),也可以是其它类的成员。
T类的基本特征将在下面讲述。
构造函数:
许多T类非常简单以至于根本不需要构造函数,那些包含有构造函数的,是通过构造函数初始化成员数据。
拷贝构造函数和赋值运算符:
拷贝构造函数(TX(const TX&))和赋值操作符(TX& operator=(const TX&))很少需要,这是因为拷贝是浅拷贝,T类几乎都是按成员进行拷贝。C++编译器会产生缺省的拷贝构造函数和赋值操作符。
当T类是有一个整数参数的模板类时会需要这两个函数,这种情况下,拷贝或赋值TX<32>到TX<40> 比按位拷贝要复杂一些,因此需要明确实现拷贝构造函数和赋值操作符。
析构函数:
T类不需要析构函数,因为当T类生命周期结束后没有需要清除的外部资源。
消毁
T类可以安全的在栈上消毁,消毁意味着不用通过析构函数就可以释放内存。因为T类自己不拥有外部资源,所以当T类对象被消毁时不会有外部资源变的不可访问。
函数参数
做为函数参数时T类可以通过值和引用进行传递。
数据成员
T类可以包含其它T类对象,另外,可以包含R类对象或C类对象的指针,包含的这些对象是通过另一个类或函数进行清除的,在实践中,很少用这种方法。
标准类层次:C类和CBase类
使用最多的类除了T类还有C类,C类是直接或间接从CBase类派生出来的。