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);