我正在查看我在旧代码库中发现的东西,我很困惑。
这是一个函数定义:
void vUpdateSequenceDetailsAndIncrement(
const CallEvent& roCPEvent,
const CallInfo& roCallInfo,
BOOL bCreationEvent);
这里被称为:
vUpdateSequenceDetailsAndIncrement(roCPEvent, NULL, FALSE);
这里NULL被直接传递给引用参数roCallInfo
。该函数最终调用:
vTimeChange(*pSeqDetails, roCPEvent, roCallInfo);
定义:
void vTimeChange(const SequenceDetails& roSequenceDetails,
const CallEvent& roCPEvent,
const CallInfo& roCallInfo)
再次将可能为 NULL 的值传递给roCallInfo
. 我认为NULL不能作为参考传递?有谁知道 VC++ 4.x 是否有某种问题使这种代码没问题?如果 NULL 可以作为引用传递,那么在 vTimeChange 中会发生这样的事情:
roCallInfo.getCallStartTime();
这不是以与我要做的方式相同的方式取消引用 NULL
CallInfo * info = NULL;
info->getCallStartTime();
? 无论如何,我可能会在那里放置一个警卫,如果不需要,让编译器将其删除,但我很想深入了解这是如何发生的!
谢谢。