C++ 基类和派生类构造函数调用C++;
还有函数指针C++ 基类和派生类构造函数调用C++;,c++,C++,还有函数指针 static const GetEvent cGetEvent; GetEvent::GetEvent():ClassA( ID, newMsg, NULL, NULL, 0 ) { //no stmts inside; } typedef ClassA*(*pNewMsg)(无效); #定义DECLARE_NEWMSG(ClassName,ClassID) 静态类名*FromMsg(ClassA*psg) {
static const GetEvent cGetEvent;
GetEvent::GetEvent():ClassA( ID, newMsg, NULL, NULL, 0 )
{
//no stmts inside;
}
typedef ClassA*(*pNewMsg)(无效);
#定义DECLARE_NEWMSG(ClassName,ClassID)
静态类名*FromMsg(ClassA*psg)
{
返回动态投影(psg);
}
静态ClassA*newMsg()
{
返回新的类名;
}
此语法称为,可用于在构造期间初始化类成员。构造派生类对象时,其父类也将初始化(从层次结构的顶部开始)。在这种情况下,GetEvent
构造函数指定如何构造ClassA
对象(尽管读取代码,ClassA
的实际类定义并没有指定此构造函数)
此函数指针typedef表示
我们可以调用的函数指针pNewMesg
,它不带任何参数(void
),并返回指向ClassA
对象的指针
稍微好的解释函数指针TyPulf语法在C++ FAQ:
static const GetEvent cGetEvent;
GetEvent::GetEvent():ClassA( ID, newMsg, NULL, NULL, 0 )
{
//no stmts inside;
}
typedef ClassA* (*pNewMsg)(void);
#define DECLARE_NEWMSG(ClassName,ClassID)
static ClassName* FromMsg(ClassA* psg)
{
return dynamic_cast<ClassName*>(psg);
}
static ClassA* newMsg()
{
return new ClassName;
}
static const GetEvent cGetEvent;
GetEvent::GetEvent():ClassA( ID, newMsg, NULL, NULL, 0 )
{
//no stmts inside;
}
typedef ClassA* (*pNewMsg)(void);