Isn' t std::unique_ptr
是否是一个指向内存的唯一指针,没有其他指针指向此内存?
那么为什么std:unique_ptr
有一个get()
成员函数,它返回一个指向std::unique_ptr
拥有的内存的原始指针?
因此,通过使用get()
我们可以创建许多所有者(原始指针)到std::unique_ptr
的记忆,这不是没有意义的吗?
答案 0 :(得分:3)
想象一下:
void process_file()
{
const int max_size = 10000;
std::unique_ptr<char[]> buffer(new char[max_size]);
ifstream f("myfile.txt");
f.read(buffer.get(), max_size);
...
... process buffer
...
}
如果没有get()
,你会怎么做? unique_ptr
无法按原样传递给istream::read
。
好吧,正如评论所说,你可以使用&*buffer
来做到这一点,但这远非易事 - 使用buffer.get()
清楚地告诉读者&#34;这是缓冲区内的原始指针。