gpt4 book ai didi

c++ - C++中的内存分配和继承类

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

假设我有这些结构:

struct Base{
...
}

struct Derived:public Base{
//everything Base contains and some more
}

我有一个函数,我想在其中复制一个数组,然后更改它。

void doStuff(Base *data, unsigned int numItems){
Base *newdata = new Base[numItems];
memcpy(newdata, data, numItems*sizeof(Base));
...
delete [] newdata;
}

但是如果我像这样使用这个函数:

Base *data = new Derived[100];
doStuff(data, 100);

这行不通,对吗?因为Derived1比Base大,所以给Base分配内存不够?

最佳答案

没错。这是 slicing problem 的变体.

关于c++ - C++中的内存分配和继承类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2292647/

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