gpt4 book ai didi

c++ - NULL 直接传递给需要 const 引用参数的函数 (VC++ 4.2)

转载 作者:塔克拉玛干 更新时间:2023-11-03 01:05:09 24 4
gpt4 key购买 nike

我正在查看我在旧代码库中发现的一些东西,我很困惑。

这是一个函数定义:

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();

?无论如何,我可能会在那里设置一个守卫,并让编译器在不需要时将其删除,但我很乐意深入了解这是如何发生的!

谢谢。

最佳答案

取决于 VC 4.2 中如何定义 NULL

如果只是

#define NULL 0 

那么您实际上已经了解了这一点:

vUpdateSequenceDetailsAndIncrement(roCPEvent, CallInfo(0), FALSE);

并将 CallInfo 类型的临时变量的引用传递给函数(如果 CallInfo 具有兼容的构造函数)

关于c++ - NULL 直接传递给需要 const 引用参数的函数 (VC++ 4.2),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7337832/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com