【发布时间】:2017-01-12 15:22:29
【问题描述】:
我用谷歌搜索并没有找到任何东西。我想我只是不知道如何输入正确的问题。
好的,我的简单 MemoryBlock 类有两个成员数据,int size 和 int* data。因此,为了构建一个复制构造函数,我使用 std::copy 来进行内存复制。现在我想尝试使用 C++ 智能指针来替换原始指针。说使用unique_ptr<int> data。以下代码的等价物是什么?因为现在,rhs.data + size 将不起作用。
std::copy(rhs.data, rhs.data + size, data);
【问题讨论】:
-
std::copy(rhs.data.get(), rhs.data.get() + size, data.get()); -
为什么不使用
std::vector? -
std::unique_ptr<int[]>会不会更好? -
为了澄清 campster 的评论,
std::unique_ptr<int>拥有一个分配有new[]的指针会很糟糕,因为std::unique_ptr<int>::~unique_ptr会有未定义的行为。 -
@NathanOliver 我只是在尝试一些 c++ 基础知识,并试图弄清楚这些新的 c++ 特性对构建类意味着什么。
标签: c++ c++11 smart-pointers unique-ptr