假设我有这些结构:
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/