提起有关symbian
![](/icons/87041chengxu.gif)
![](/icons/87041de.gif)
开发
![](/icons/87041dou.gif)
让我印象最深
![](/icons/87041de.gif)
是纯虚类
![](/icons/87041de.gif)
应用
![](/icons/87041dou.gif)
几乎是随处可见
![](/icons/87041dou.gif)
但如果你是做MFC应用开发
![](/icons/87041dou.gif)
却是很难看到纯虚类
![](/icons/87041de.gif)
使用
![](/icons/87041de.gif)
![](/icons/87041dou.gif)
刚开始我
![](/icons/87041yi.gif)
直以为是
![](/icons/87041yinwei.gif)
嵌入式
![](/icons/87041chengxu.gif)
有较多
![](/icons/87041de.gif)
异步消息响应才会用到纯虚类
![](/icons/87041dou.gif)
当我学会自己运用纯虚类来为自己
![](/icons/87041de.gif)
![](/icons/87041chengxu.gif)
设计接口时
![](/icons/87041dou.gif)
我才发现纯虚类
![](/icons/87041de.gif)
使用是多么
![](/icons/87041de.gif)
妙!
我第
![](/icons/87041yi.gif)
次碰到纯虚
![](/icons/87041hanshu.gif)
是看到
![](/icons/87041yi.gif)
个有关time out触发控制
![](/icons/87041de.gif)
类
![](/icons/87041dou.gif)
这个类非常简单
![](/icons/87041dou.gif)
当超时则触发某个处理思路方法
![](/icons/87041dou.gif)
就让我们看看这个类是如何设计
![](/icons/87041de.gif)
:
先设计
![](/icons/87041yi.gif)
个纯虚
![](/icons/87041hanshu.gif)
来实现超时处理思路方法
![](/icons/87041dou.gif)
当
![](/icons/87041yi.gif)
个类需要运用超时处理时
![](/icons/87041dou.gif)
只要继承这个类
![](/icons/87041dou.gif)
并为这个类
![](/icons/87041de.gif)
纯虚
![](/icons/87041hanshu.gif)
实现处理思路方法
![](/icons/87041dou.gif)
即可在这个类中实现超时处理思路方法:
![](/icons/87041class.gif)
MTimeOutNot
![](/icons/87041if.gif)
y
{
public:
virtual void TimerExpired
![](/icons/87041kh.gif)
= 0;
};
下面是
![](/icons/87041yi.gif)
个继承了定时器
![](/icons/87041de.gif)
类
![](/icons/87041dou.gif)
这个类中带有
![](/icons/87041yi.gif)
个上面纯虚类
![](/icons/87041de.gif)
对象(即iNot
![](/icons/87041if.gif)
y对象)
![](/icons/87041dou.gif)
当出现超时它会
![](/icons/87041diaoyong.gif)
这个对象
![](/icons/87041de.gif)
思路方法
![](/icons/87041dou.gif)
从而建立了超时
![](/icons/87041de.gif)
处理机制:
![](/icons/87041class.gif)
CTimeOutTimer : public CTimer
{
public:
![](/icons/87041static.gif)
CTimeOutTimer* NewL(const TInt aPriority, MTimeOutNot
![](/icons/87041if.gif)
y& aTimeOutNot
![](/icons/87041if.gif)
y);
![](/icons/87041static.gif)
CTimeOutTimer* NewLC(const TInt aPriority, MTimeOutNot
![](/icons/87041if.gif)
y& aTimeOutNot
![](/icons/87041if.gif)
y);
~CTimeOutTimer
![](/icons/87041kh.gif)
;
protected: // From CTimer
virtual void RunL
![](/icons/87041kh.gif)
;
private:
CTimeOutTimer(const TInt aPriority, MTimeOutNot
![](/icons/87041if.gif)
y& aTimeOutNot
![](/icons/87041if.gif)
y);
void ConstructL
![](/icons/87041kh.gif)
;
private:
// Member variables
MTimeOutNot
![](/icons/87041if.gif)
y& iNot
![](/icons/87041if.gif)
y;
};
下面是有关定时器类
![](/icons/87041de.gif)
构造思路方法
![](/icons/87041dou.gif)
从这个构造思路方法可以看出例子化这个类时需要传入纯类
![](/icons/87041de.gif)
对象:
CTimeOutTimer::CTimeOutTimer(const TInt aPriority, MTimeOutNot
![](/icons/87041if.gif)
y& aTimeOutNot
![](/icons/87041if.gif)
y)
: CTimer(aPriority), iNot
![](/icons/87041if.gif)
y(aTimeOutNot
![](/icons/87041if.gif)
y)
{
}
我们在建立应用这个定时器
![](/icons/87041de.gif)
类时只要继承纯虚
![](/icons/87041hanshu.gif)
![](/icons/87041dou.gif)
然后把应用类
![](/icons/87041de.gif)
对象作为参数传入即可
![](/icons/87041dou.gif)
假如有
![](/icons/87041yi.gif)
个需要使用超时机制
![](/icons/87041de.gif)
应用类A
![](/icons/87041dou.gif)
则A中有
![](/icons/87041yi.gif)
个CTimeOutTimer成员对象B
![](/icons/87041dou.gif)
且A类继承了虚类CTimeOutTimer
![](/icons/87041dou.gif)
例子化B则可以这样:
B =
![](/icons/87041new.gif)
CTimerOutTimer(0,this);
下面
![](/icons/87041hanshu.gif)
实现超时回调思路方法:
void CTimeOutTimer::RunL
{
iNot
![](/icons/87041if.gif)
y.TimerExpired
![](/icons/87041kh.gif)
;
}
在symbian C
![](/icons/87041jiajia.gif)
SDK中
![](/icons/87041dou.gif)
几乎所有带异步消息响应
![](/icons/87041de.gif)
类都必然会有
![](/icons/87041yi.gif)
个纯虚类
![](/icons/87041dou.gif)
![](/icons/87041yinwei.gif)
手机属于嵌入式设备
![](/icons/87041dou.gif)
由于资源有限
![](/icons/87041dou.gif)
很多消息是异步消息
![](/icons/87041dou.gif)
所以随处可以见到纯虚类
![](/icons/87041de.gif)
应用
![](/icons/87041dou2.gif)
但纯虚类并不局限于应用异步消息思路方法中
![](/icons/87041dou.gif)
它也可以应用于需要产生回调思路方法
![](/icons/87041de.gif)
模块接口设计中
![](/icons/87041dou.gif)
应用纯虚类来建立相应
![](/icons/87041de.gif)
接口简要地说可以有如下这些好处:
1. 模块接口更加清晰;
2. 模块
![](/icons/87041de.gif)
设计更加独立和灵活;
3. 模块的间
![](/icons/87041de.gif)
耦合度更小
还有
![](/icons/87041yi.gif)
个让我有
![](/icons/87041yi.gif)
个说不出
![](/icons/87041de.gif)
好处
![](/icons/87041dou.gif)
它会让你觉得这种处理回调
![](/icons/87041de.gif)
思路方法是多么
![](/icons/87041de.gif)
妙!让我深感运用C
![](/icons/87041jiajia.gif)
可以设计出
![](/icons/87041yi.gif)
个结构非常好
![](/icons/87041de.gif)
![](/icons/87041chengxu.gif)
框架
![](/icons/87041dou.gif)
不象C语言
![](/icons/87041dou.gif)
总给人
![](/icons/87041yi.gif)
种拼凑
![](/icons/87041de.gif)
感觉
我总认为编程也会有艺术上
![](/icons/87041de.gif)
美感享受
![](/icons/87041dou.gif)
当然前提是
![](/icons/87041chengxu.gif)
要写得妙
延伸阅读
最新评论