程式碼(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,才能開始對物件存取?
雖然會節省一點點空間,但是這樣寫實在很麻煩,也不清楚對速度的影響是好是壞
請問有其他理由支持這種寫法嗎?