此代码是否调用不存在的构造函数?

Is this code calling a constructor that doesn't exist?

本文关键字:构造函数 不存在 调用 代码 是否      更新时间:2023-10-16

也许这是一个基本的误解,但下面一行让我感到困惑:

return *static_cast<MockBehavior*>(COMPOSITE::m_Children[index]);

这条线到底在干什么?

您的标题和问题文本似乎不一致,但该行采用由COMPOSITE::m_Children[index]表示的指针(其中COMPOSITE应该是某种命名空间或类),将指针类型强制转换为MockBehavior*,然后取消引用,生成一个按引用的MockBehavior对象。然后,这可能是由值返回的(同样,问题缺少重要的所需上下文),从而导致对问题中未显示的某个对象类型的复制构造函数的调用。

它正在访问COMPOSITE::m_Children[index],不管是什么。希望是指向某个对象的指针数组。

然后,它尝试将该指针转换为指向MockBehavior的指针。最后,它取消引用该指针,并返回结果。

如果包含它的函数是按值返回的,那么这将涉及MockBehavior的复制构造函数。