博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
[图文]Symbian OS 中的Class命名约定( T类)(转)
阅读量:2495 次
发布时间:2019-05-11

本文共 1399 字,大约阅读时间需要 4 分钟。

T类的功能非常类似于ANSI C++的内部数据类型,因此它们的前缀与上面所说的typedefs为同一个字母(“T”为“Type”)。和所有的内部数据类型一样,它们也没有析构函数,所以T类也不应包含任何有析构函数的成员数据。T类中可以包含的数据成员如下:

 “‘plain ol’ data”(内部类型)及对其它T类对象。
 指针和引用(reference) “uses a”关系的效率要优于“has a”关系,后者暗示了拥有关系,TPtrC描述符是一个典型的指针T类,在第5章中有详细的论述。
T类内部包含它们的所有数据但并不包含指针,引用或句柄 (尽管允许使用指向其他对象数据的引用)。T类不允许拥有外部数据的原因是因为T类禁止拥有析构函数。
不用析构函数,T类对象可以在stack上创建并在离开函数作用域时恰当的清除,正常返回或者产生一个leave(“leaving”的详细论述参见第2章)。即使T类有析构函数,Symbian OS也不能在发生leave时调用它,因为leave不同于ANSI C++中的throw机制。如果需要调用析构函数来安全的清除对象,对象只能在代码作用域内的stack上创建,因为在这个作用域内不会产生leave——这无疑带来了一些限制。
T类对象也可以在heap上创建。但在heap上创建的T类对象必须在有可能产生leave的代码之前将其压入清洁栈(cleanup stack)。一旦leave发生,T类对象的内存可以通过清洁栈来释放(详细论述参见第3章) 但是这样不会调用析构函数。
T类在一般情况下同样不定义默认构造函数,实际上,当一个T类仅由内部类型组成时,构造函数将会阻止你使用类似下面的成员初始化方式:
TMyPODClass local = {2000, 2001, 2003};
但是,T类在导出虚函数极少的情况下,默认的构造函数必须导出,因为它需要依靠一些客户端代码链接。针对这一问题我们将在第20章详细讨论EXPORT_C操作符。
通常,T类成员非常单一,足以进行逐位复制(bitwise copy),所以复制构造函数和赋值操作符是很简单的,编译器自动产生的版本可以有更高的效率。所以除非有特殊要求通常不需要编写复制构造函数和赋值操作符。当然如果需要防止复制操作,就需要在class中将复制构造函数和赋值操作符声明为private并且不予实现。
一些T类的API非常复杂,例如那些可以进行字符串分析的TLex类和描述符基类TDesC与TDes(参见第5章)。但在有些情况下,T类只是一个C语言风格的由公共数据成员组成的struct(通常,struct的前缀是S而不是T,但近来大多数Symbian OS的代码更倾向于使用T前缀)。
在枚举中你也可以看到T前缀的使用,因为它们同样是简单类型。例如:
enum TMonthsOfYear{EJanuary=1,EFebruary = 2,……,EDecember= 12};

基本原则----T类禁止拥有析构函数

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/10294527/viewspace-126139/,如需转载,请注明出处,否则将追究法律责任。

转载于:http://blog.itpub.net/10294527/viewspace-126139/

你可能感兴趣的文章
Lambda 表达式
查看>>
函数式数据处理(一)--流
查看>>
java 流使用
查看>>
java 用流收集数据
查看>>
java并行流
查看>>
CompletableFuture 组合式异步编程
查看>>
mysql查询某一个字段是否包含中文字符
查看>>
Java中equals和==的区别
查看>>
JVM内存管理及GC机制
查看>>
Java:按值传递还是按引用传递详细解说
查看>>
Java中Synchronized的用法
查看>>
阻塞队列
查看>>
linux的基础知识
查看>>
接口技术原理
查看>>
五大串口的基本原理
查看>>
PCB设计技巧与注意事项
查看>>
linux进程之间通讯常用信号
查看>>
main函数带参数
查看>>
PCB布线技巧
查看>>
关于PCB设计中过孔能否打在焊盘上的两种观点
查看>>