C++初始化列表
问题描述:
我几乎不认识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个参数的构造函数。
我无法确定它是如何被调用的。但是代码运行时没有任何错误。
答
m_pMsg
不是Rs232Msg
类。相反,它的一个指针到Rs232Msg
类。所有正在被复制的是一个指向该类的已经存在的实例的指针,所以这里的构造函数没有被调用。
答
m_pMsg
和pMsg
指向Rs232Msg
,所以Rs232Msg
构造函数没有被调用;你只是存储一个指向预先存在的实例的指针。
谢谢大家给我解释一下it.But m_eEvent不是一个指针。它是一个枚举变量。这里和你所有人都告诉我变量eEvent被复制到m_eEvent.Is一样,我在想什么是正确的? – 2011-06-03 14:45:40
C++中的枚举只是整数值。您的案例中的'm_eEvent'只是价值初始化的。 – 2011-06-03 15:09:36