这是我需要的:
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/