程式码(Code):(请善用置底文网页, 记得排版)
void wxEvtHandler::DoBind(int id,
int lastId,
wxEventType eventType,
wxEventFunctor *func,
wxObject *userData)
{
// 省略
if (!m_dynamicEvents)
m_dynamicEvents = new wxList;
// 省略
}
bool
wxEvtHandler::DoUnbind(int id,
int lastId,
wxEventType eventType,
const wxEventFunctor& func,
wxObject *userData)
{
if (!m_dynamicEvents)
return false;
wxList::compatibility_iterator node = m_dynamicEvents->GetFirst();
while (node)
{
// 省略
}
return false;
}
补充说明(Supplement):
像上面程式码中的 m_dynamicEvents,一开始是 NULL,等到 DoBind 的时候才 new 出来
可是这样写,之后每个要使用 m_dynamicEvents 的函式(如 DoUnbind)
不就都要先检查一次 m_dynamicEvents 是否等于 NULL,才能开始对物件存取?
虽然会节省一点点空间,但是这样写实在很麻烦,也不清楚对速度的影响是好是坏
请问有其他理由支持这种写法吗?