此代码是否调用不存在的构造函数?
Is this code calling a constructor that doesn't exist?
也许这是一个基本的误解,但下面一行让我感到困惑:
return *static_cast<MockBehavior*>(COMPOSITE::m_Children[index]);
这条线到底在干什么?
您的标题和问题文本似乎不一致,但该行采用由COMPOSITE::m_Children[index]
表示的指针(其中COMPOSITE应该是某种命名空间或类),将指针类型强制转换为MockBehavior*
,然后取消引用,生成一个按引用的MockBehavior
对象。然后,这可能是由值返回的(同样,问题缺少重要的所需上下文),从而导致对问题中未显示的某个对象类型的复制构造函数的调用。
它正在访问COMPOSITE::m_Children[index]
,不管是什么。希望是指向某个对象的指针数组。
然后,它尝试将该指针转换为指向MockBehavior
的指针。最后,它取消引用该指针,并返回结果。
如果包含它的函数是按值返回的,那么这将涉及MockBehavior
的复制构造函数。
相关文章:
- g++ 说函数不存在,即使包含正确的标头
- 无论如何,我可以确定构造函数是否存在吗?
- 仅包含可移动 std::map 的类的移动构造函数不起作用
- C++ - 空模板类构造函数不初始化值
- 为什么从另一个构造函数内部调用C++构造函数不修改类变量?
- 将参数传递给泛型 lambda 时复制构造函数不正确
- 为什么复制构造函数不需要检查输入对象是否指向自身?
- 为什么继承的受保护构造函数不能公开?
- 为什么原始卷曲构造函数 {} 不返回右值?
- 为什么std::atomic的默认构造函数不默认初始化底层存储值
- C++/Win32 构造函数不使用从对话框获取的字符串初始化变量
- 如果普通默认构造函数不执行任何操作,为什么我们不能使用 malloc 创建平凡可构造的对象?
- 基于构造函数的存在禁用代码
- 子类化 STL 容器:范围构造函数不起作用
- 带有此指针的模板类多重继承构造函数不起作用?
- C++默认复制构造函数不可行
- 构造函数不会将使用 new 初始化的数组作为参数
- 按值将对象传递给 SubClass 构造函数,导致超类的构造函数不调用
- 为什么 std::map 的移动构造函数不是 noexcept?
- 复制构造函数的存在会导致函数通过引用而不是值返回