gpt4 book ai didi

c++ - C++ 基类在构造后存储 'this' 的值以供将来的虚拟调用安全吗?

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

在 C++ 中的 Base 构造函数中,“this”的实际类型是“Base”而不是“Derived”,因此调用虚函数是不安全的。但是,基类在基构造期间将“this”的传递给回调对象是否安全,该回调对象将在构造完成后将来调用虚函数?

最佳答案

在构造函数中,调用虚方法并非不安全,因为 thisBase 类型,但因为对象尚未完全构造。 Derived 成员此时未初始化,因此在 Derived 中执行虚方法实现将对未初始化的实例进行操作。

这就是为什么标准指定在构造函数/析构函数调用期间调用的函数是构造函数或析构函数类中的最终重写器,而不是在更多派生类中重写它的函数

您可以安全地存储它并从它完全构建的那一刻起调用它的虚函数,即在构造函数退出后立即调用(当然是在 Base 类上定义的那些虚函数)。

关于c++ - C++ 基类在构造后存储 'this' 的值以供将来的虚拟调用安全吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40112366/

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