Symbian 的二阶段构造机制
2010-05-19 18:25:00 来源:WEB开发网核心提示:OS为了简化实例化的步骤,又引入了NewL(),NewLC()两个函数(其实也可以写成一个NewL(),然而大家都比较推崇同时创建 NewL()和NewLC()),Symbian 的二阶段构造机制(2),其具体的实现方式见问题3;问题3:如何在新的类中创建二阶段构造函数?.h头文件:Class CClassName :
OS为了简化实例化的步骤,又引入了NewL(),NewLC()两个函数(其实也可以写成一个NewL(),然而 大家都比较推崇同时创建
NewL()和NewLC()),其具体的实现方式见问题3;
问题3:如何在新的类中创建二阶段构造函数?
.h头文件:
Class CClassName : public CBase
{
public:
static CClassName* NewL();
static CClassName* NewlC();
~CClassName();
private:
CClassName(); //第一阶段构造
void ConstructL(); //第二阶段构造
……
}
cpp 源文件:
CClassName* CClassName::NewL()
{
CClassName* self = CClassName::NewLC();
CleanupStack::Pop(self);
return self;
}
CClassName* CClassName::NewLC()
{
CClassName* self = new (ELeave) CClassName();
CleanupStack::PushL(self);
self->ConstructL(); //二阶段构造
return self;
}
void CClassName::ConstructL()
{
/************** 可能产生异常的代码************/
}
更多精彩
赞助商链接