2011-06-03 111 views
3

我几乎不认识C++,不是专家。C++初始化列表

我正在查看已有的代码。 我无法理解下面的代码。

typedef enum 
{ 
    eEvent_MsgOk,    
    eEvent_InvalidMsgId,  
    eEvent_Failure,   
} eEventType; 

class Rs232Event 
{ 
public: 
    Rs232Msg*  m_pMsg;  
    eEventType  m_eEvent; 

} 
Rs232Event::Rs232Event(eEventType eEvent,Rs232Msg* pMsg) 
: m_pMsg(pMsg), m_eEvent(eEvent) 
{ 
    // not implemented on purpose 
} 

这里使用初始化列表他们初始化值。

但是Rs232Msg类没有单参数化构造函数。

但它有一个接受4个参数的构造函数。

我无法确定它是如何被调用的。但是代码运行时没有任何错误。

+0

谢谢大家给我解释一下it.But m_eEvent不是一个指针。它是一个枚举变量。这里和你所有人都告诉我变量eEvent被复制到m_eEvent.Is一样,我在想什么是正确的? – 2011-06-03 14:45:40

+0

C++中的枚举只是整数值。您的案例中的'm_eEvent'只是价值初始化的。 – 2011-06-03 15:09:36

回答

6

m_pMsg不是Rs232Msg类。相反,它的一个指针Rs232Msg类。所有正在被复制的是一个指向该类的已经存在的实例的指针,所以这里的构造函数没有被调用。

1

m_pMsgpMsg指向Rs232Msg,所以Rs232Msg构造函数没有被调用;你只是存储一个指向预先存在的实例的指针。