gpt4 book ai didi

c++ - 在特定位置分配多态类成员?

转载 作者:塔克拉玛干 更新时间:2023-11-03 02:22:02 26 4
gpt4 key购买 nike

我有一个包含几个类成员和一个多态成员的类:

class Container{

Container::Container(){ p = new Derived();}

Poly* p;
A a;
B b;
};

我想为 Container::p 指向的实际多态对象分配内存,在 Container::b 之后连续分配,而不是通过默认的 new() 和因此 malloc()

实现此目标的最佳方法是什么?

最佳答案

在某种程度上,细节取决于Container 构造函数如何决定Poly 的具体类型。据推测,这种选择可能会有所不同。否则,只需在 b 之后声明一个 Derived 成员即可。

但是假设这个问题是有道理的,你只需要使用 placement new,并确保 Container 只能动态分配。注意对齐!令人高兴的是,C++11 添加了对此的支持。

确保 Container 仅动态分配的一个好方法是使客户端代码无法访问析构函数。

对于分配大小,我可能会在类 Container 中定义一个自定义分配函数(operator new),传递足以确定总对象大小的参数。

但同样,细节取决于您遇到的具体案例:问题未明确说明。

关于c++ - 在特定位置分配多态类成员?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36090289/

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