Dan*_*iel 6 c++ smart-pointers unique-ptr c++11
我用谷歌搜索,什么也没找到。我想我只是不知道如何输入正确的问题。
好的,我的简单 MemoryBlock 类有两个成员数据,int size和int* data. 所以要构建一个复制构造函数,我使用 std::copy 来进行内存复制。现在我想尝试用 C++ 智能指针来替换原始指针。说使用unique_ptr<int> data. 以下代码的等价性是什么?因为现在,rhs.data + size行不通了。
std::copy(rhs.data, rhs.data + size, data);
Run Code Online (Sandbox Code Playgroud)
首先,您必须为创建的对象分配数组,然后您可以将值复制到它。例如
MemoryBlock( const MemoryBlock &m ) : size( m.size ), data( new int[m.size] )
{
std::copy(m.data.get(), m.data.get() + m.size, data.get());
}
Run Code Online (Sandbox Code Playgroud)
考虑到成员数据data必须声明为
std::unique_ptr<int[]> data;
Run Code Online (Sandbox Code Playgroud)
如果要将移动构造函数添加到类中,可以通过以下方式定义它
MemoryBlock( MemoryBlock &&m ) : size( 0 ), data( nullptr )
{
std::swap( m.size, size );
std::swap( m.data, data );
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
7116 次 |
| 最近记录: |