gpt4 book ai didi

c++ - 动态分配的对象 C++

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

大家好,我有一个简短的问题。我正在回到 C++ 并且对此感到疑惑

如果我有动态分配的对象:

MyObject* obj = new MyObject();

它内部有一个数组作为成员:

class MyObject 
{
public:
MyObject();
~MyObject();
float array[16];
private:
};

只会做一个正常的删除:

delete obj;

在对象上释放所有内存(包括数组)?或者我需要为此做一些特别的事情吗?

最佳答案

是的,你做得很好。对象的所有内存将被释放。

p.s.: 如果你也在类内部动态创建内存,你应该在析构函数~MyObject()中释放它们的内存。

例如:

class MyObject
{
public:
/** Constructor */
MyObject() : test(new int[100]) {}
/** Destructor */
~MyObject() { delete []test; }; // release memory in destructor
/** Copy Constructor */
MyObject(const MyObject &other) : test(new int[100]){
memcpy(test, other.test, 100*sizeof(int));
}
/** Copy Assignment Operator */
MyObject& operator= (MyObject other){
memcpy(test, other.test, 100 * sizeof(int));
return *this;
}

private:
int *test;
};

p.s.2:需要额外的复制构造函数和dopy赋值运算符才能使其遵循Rule of three。 .

关于c++ - 动态分配的对象 C++,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26568916/

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