Symbian入门系列四(描述符)
2006-12-24 19:31
190 查看
作者:liujiwei 发帖日期:2006-12-6 21:39:12
描述符就是ASCI C++里面的字符
CDesC是所有描述符的基类.
CDesC以C结尾,表明是常量.
提供了一些对象不可修改的方法.
CDesC提供了一些如lengh和Ptr的方法.
与你想象的不同,这些不是虚函数.
而是硬性编码来实现的.
所有的描述符的前四个字节都是相同的.
用来描述描述符的类型.
后二十八个字节是用来表示长度.
CDes是从CDesC派生而来.
在CDesC基础之上,增加了很多修改的方法.
它增加了maxlengh,占据4个字节.
你可以对CDes的对象进行各种修改操作.
但是不能超过maxlengh,否则的话会产生一个严重的panic.
CDes不提供ReAlloc这样的方法.
因为这样描述符就要自己管理内存.
这样的设计违背了描述符高效和简单的初衷.
以上这两个基类包含了所有描述符操作的方法.
它们的子类负责构造和销毁.
例如构造函数,拷贝构造函数,=运算符重载.
具体用于实现的,在Symbian里面有三种描述符.
第一种是指针描述符(TPtr,TPtrC)
它的对象在stack构造.
它存储的是指针,该指针指向字符串.
它不关心字符串的存储位置.
TPtrC有个Set方法,你可以改变指针所指的位置.
如果你不想更改,你可以在前面加上 const.
第二种是缓冲描述符(TBuf,TBufC)
它的对象是在stack上构造的.
它存储的是字符串.
它适合在栈构造比较小的固定长度的对象.
第三种是堆描述符(HBuf,HBufC)
它是在heap上构建的.
如果描述符比它的对象的生存周期还长,
如果你不知道描述符的大小,
那就用堆描述符.
HBufC可以重新分配.
描述符就是ASCI C++里面的字符
CDesC是所有描述符的基类.
CDesC以C结尾,表明是常量.
提供了一些对象不可修改的方法.
CDesC提供了一些如lengh和Ptr的方法.
与你想象的不同,这些不是虚函数.
而是硬性编码来实现的.
所有的描述符的前四个字节都是相同的.
用来描述描述符的类型.
后二十八个字节是用来表示长度.
CDes是从CDesC派生而来.
在CDesC基础之上,增加了很多修改的方法.
它增加了maxlengh,占据4个字节.
你可以对CDes的对象进行各种修改操作.
但是不能超过maxlengh,否则的话会产生一个严重的panic.
CDes不提供ReAlloc这样的方法.
因为这样描述符就要自己管理内存.
这样的设计违背了描述符高效和简单的初衷.
以上这两个基类包含了所有描述符操作的方法.
它们的子类负责构造和销毁.
例如构造函数,拷贝构造函数,=运算符重载.
具体用于实现的,在Symbian里面有三种描述符.
第一种是指针描述符(TPtr,TPtrC)
它的对象在stack构造.
它存储的是指针,该指针指向字符串.
它不关心字符串的存储位置.
TPtrC有个Set方法,你可以改变指针所指的位置.
如果你不想更改,你可以在前面加上 const.
第二种是缓冲描述符(TBuf,TBufC)
它的对象是在stack上构造的.
它存储的是字符串.
它适合在栈构造比较小的固定长度的对象.
第三种是堆描述符(HBuf,HBufC)
它是在heap上构建的.
如果描述符比它的对象的生存周期还长,
如果你不知道描述符的大小,
那就用堆描述符.
HBufC可以重新分配.
相关文章推荐
- [转载]Symbian开发系列 - 入门篇
- symbian 入门系列——认识TBufC和TBuf,framework,document对象分析(转)
- USB入门系列之七 —— USB的描述符及各种描述符之间的依赖关系
- USB入门系列之七 —— USB的描述符及各种描述符之间的依赖关系
- symbian入门系列 -- Windows C++ 程序员如何过度到Symbian C++ ?(转)
- USB入门系列之七 —— USB的描述符及各种描述符之间的依赖关系【转】
- Symbian入门系列一(环境配置)
- Symbian入门系列二(类的命名)
- USB入门系列之七 —— USB的描述符及各种描述符之间的依赖关系【转】
- Symbian开发系列 - 入门篇
- [转载]Symbian开发系列 - 入门篇
- 【 D3.js 视频系列 】 飞速入门
- Provisioning Services 7.8 入门系列教程之十四 UEFI支持和BOOTPTAB 编辑器
- Spark入门实战系列--2.Spark编译与部署(下)--Spark编译安装
- IC设计基础系列之低功耗篇2:(数字IC)低功耗设计入门(二)——功耗的分析
- Spark入门实战系列--6.SparkSQL(中)--深入了解SparkSQL运行计划及调优
- 卦卦学mysql系列(2)——mysql入门 对数据表的操作
- Jenkins入门系列之— Jenkins安装与配置
- C++ Primer学习系列(1):快速入门/变量和基本类型/标准库类型
- RHEL6入门系列之五,安装RHEL6.3 推荐