如何深抄无号长
How to deep copy unsigned long
本文关键字:何深抄 更新时间:2023-10-16
我有这个类
typedef unsigned long Item;
class Stack
{
private:
enum { MAX = 10} ;
Item * pitems;
int size;
int top;
public:
Stack(int n = 10);
Stack(const Stack & st);
};
如何对Item
进行深度复制?这样对吗?
pitems = st.pitems;
Stack::Stack(const Stack & st){
size = st.size;
pitems = new Item[size + 1];
pitems = st.pitems;
top = st.top;}
遍历并复制它们,而不是复制其他类的指针。
Stack::Stack(const Stack &st)
{
this->size = st.size;
this->top = st.top;
this->pitems = new Item[this->size + 1];
for (auto i = 0; i < this->size; ++i)
{
pitems[i] = st.pitems[i];
}
}
如前所述,当前存在内存泄漏
不,您需要遍历旧数组中的每个项,并为新数组创建新的副本。
for(int i = 0; i != size; ++i)
{
pitems[i] = st.pitems[i]; //Assuming you have an equals operator for Item
}
绝对不要使用pitems = st.pitems;
,因为这会泄漏您用new Item[size + 1]
创建的新数组
相关文章:
- 函数何时会在c++中包含stack_Unwind_Resume调用
- Python中的for循环与C++有何不同
- 在C++中释放内存期间,迭代器与指针有何不同
- 与浅拷贝构造函数和深拷贝构造函数混淆
- 标准对此指向成员函数类型模板参数有何说明?是我的代码有误,还是 MSVS 16.6 有问题?
- 程序以使用C++找到树的最深叶子的总和
- 类中的 C++ int 被设置为值,似乎不知从何而来
- -fvisibility-inline-hidden 与 gcc 中的 -fvisibility=hidden 有何不同
- 错误:#include 在开发C++中嵌套得太深
- 收益率和回报有何不同?
- 覆盖私有功能,它与受保护功能有何不同?
- 擦除删除成语的性能增益从何而来
- 无论代码长度如何,以下代码的内存要求有何不同?
- "virtual"对C++析构函数有何影响?
- 如果我对"while"块发表评论,为什么程序会死机?其中的"yield"线有何影响?
- 如何将深拷贝构造函数实现到链表中?
- Qt JsonObjects和初始值设定项列表 - 比一个级别更深?
- 在函数中传递带有指针成员的结构是浅拷贝或深拷贝在 C 中
- 系统时间从何而来?
- 如何深抄无号长