gpt4 book ai didi

c++ - 保持动态分配数组而不用担心删除的最佳方法?

转载 作者:行者123 更新时间:2023-11-30 01:43:31 24 4
gpt4 key购买 nike

这是我需要的:

class A
{
public:
A()
: ptr_(new char[1000])
{}

~A()
{
delete [] ptr_;
}

private:
char* ptr_;
};

它的问题是 - 我必须编写复制构造函数和赋值运算符。我不想那样做,所以我使用 shared_array:

class A
{
public:
A()
: array_(new char[1000])
{}

private:
boost::shared_array<char> array_;
};

问题是——我必须在所有地方都使用 array_.get(),因为我需要指向缓冲区的指针。所以我还介绍了另一个指针:

class A
{
public:
A()
: array_(new char[1000])
, bore_ptr_(array_.get())
{}

private:
boost::shared_array<char> array_;
char* const bore_ptr_;
};

我的问题是 - 有更好的方法吗?在最终解决方案中我不喜欢的是——我保留了 shared_array,但我不使用它。它只是用来清洁东西。

最佳答案

看看 unique_ptr 或 shared_ptr。没有真正需要为智能指针使用 boost,因为 C++11 及以后版本有自己的集合,可以很好地处理自己..

例如,您可以使用 unique_ptr,它将为您提供所需的语法糖,因为您可以像使用常规指针一样使用智能指针(唯一或共享)。因此,只需将 shared_array 换成其中之一即可。

关于c++ - 保持动态分配数组而不用担心删除的最佳方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37608706/

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