gpt4 book ai didi

c++ - 指针 - 重复对象实例

转载 作者:可可西里 更新时间:2023-11-01 17:37:11 27 4
gpt4 key购买 nike

如果我有

Class *a1 = new Class();
Class *b1 = a1;

delete b1;
delete a1; //this will give a double free or corruption message;

如果我删除了指针b,就等于删除了指针a吧?由于两者都指向同一个 Class 实例。那么,如何将 a1 的实例复制到 b1,以便在删除 b1 时不会删除 a1。

Class *a1 = new Class();
Class *b1 = a1;

//how do I duplicate the instance a1 is pointing
//so that when I delete b1, a1 still exists.

delete b1;
delete a1; //this is still valid

谢谢。

最佳答案

您使用指针和分配有什么原因吗?否则它就像

一样简单
Class a1;
...
Class b1 = a1;

这里不需要删除

如果您需要保持结构不变

Class *a1 = new Class();
Class *b1 = new Class(*a1);

Class *a1 = new Class();
Class *b1 = new Class();
*b1 = *a1;

这假设您有一个有效的复制构造函数(例如#1)或赋值运算符(例如#2)

p.s: 尝试使用 std::unique_ptr 而不是原始指针更安全。

关于c++ - 指针 - 重复对象实例,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14050058/

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