gpt4 book ai didi

c++ - 基类和派生类构造函数的内存分配

转载 作者:搜寻专家 更新时间:2023-10-31 00:42:25 25 4
gpt4 key购买 nike

创建派生类对象时先为哪个分配空间?

是基类构造函数还是派生类构造函数?

最佳答案

首先,

  • 分配,您所询问的内存预留,不同于初始化(执行一个构造函数,该构造函数本质上在那段内存)和

  • 正式(我们的神圣标准)和实践在大多数派生对象的内存是否需要连续上有所不同,正式将“内存区域”定义为可能不连续,主要是为了支持多重虚拟继承。

也就是说,在实践中,最派生对象是一个单一的、连续的内存块,包括所有基类子对象和数据成员子对象的空间,并且这个 block 必须分配一次全部。

初始化(调用构造函数)在分配之后进行。如果初始化失败并抛出异常,new 表达式保证释放。但是,如果使用的分配函数具有额外的自定义参数(所谓的“新放置”)并且没有相应的释放函数可用,则此保证无效,例如用于早期版本的 Microsoft MFC 类框架中的调试版本(这非常讽刺:初始化失败的程序只会在调试版本中泄漏内存……)。

关于c++ - 基类和派生类构造函数的内存分配,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12064828/

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