reset方法用于将unique_ptr设置为未初始化状态(即释放其当前指向的对象并设置内部的指针为 nullptr)。这个方法有两个版本: cpp复制代码 voidreset( pointer ptr = pointer() )noexcept; ptr参数是可选的,用于显式地指定要删除的对象。如果提供了ptr,则unique_ptr将删除该对象。如果未提供ptr,则unique_ptr将删除其...
unique_ptr::reset方法的作用 unique_ptr::reset 方法用于重新设置 unique_ptr 的指向。它接受一个可选的指针参数,如果提供了参数,unique_ptr 将接管该指针的所有权,并释放之前所管理的内存(如果有的话)。如果不提供参数或传入 nullptr,则 unique_ptr 会被重置为空指针,同时释放之前所管理的内存。 如何使用 uniqu...
reset是std::unique_ptr的一个成员函数,用于将std::unique_ptr重新设置为一个新的指针(可以是空指针)。调用reset后,std::unique_ptr会释放之前管理的对象(如果有),并开始管理新的对象。 std::unique_ptr<int>ptr1(newint(10));ptr1.reset(newint(20));// ptr1 现在管理新的对象,之前的对象被释放ptr1....
使用reset把unique_ptr拥有的存储指针更改为ptr,然后删除原始存储的指针。 如果unique_ptr不为空,reset将调用原始存储指针上的get_deleter返回的删除器函数。 因为reset首先将存储新指针 ptr,然后删除原始存储的指针,如果与原始存储指针相同,则reset可以立即删除ptr。
1.get():返回unique_ptr中保存的裸指针 2.reset():重置unique_ptr。 3.release():放弃对指针的控制权,返回裸指针,并将unique_ptr自身置空。通常用来初始化另一个智能指针。 4.swap(q):交换两个智能指针所指向的对象。 【编程实验】std::unique_ptr的基本用法 ...
a.reset(); std::cout<<a<<std::endl; 1. 2. 3. 4. get获取原始指针 std::unique_ptr<int>a=std::make_unique<int>(666); int*b=a.get(); std::cout<<b<<std::endl; 1. 2. 3. release将指针置0 std::unique_ptr<int>a=std::make_unique<int>(666); ...
于,unique_ptr 指针指向的堆内存⽆法同其它 unique_ptr 共享,也就是说,每个 unique_ptr 指针都独⾃拥有对其所指堆内存空间的所有权。这也就意味着,每个 unique_ptr 指针指向的堆内存空间的引⽤计数,都只能为 1,⼀旦该 unique_ptr 指针放弃对所指堆内存空间的所有权,则该空间会被⽴即释放回收。
operator*:解引用操作符,用于获取 unique_ptr 所指向对象的引用。 operator->:箭头操作符,用于通过 unique_ptr 访问对象的成员函数或成员变量。 get:返回指向所管理对象的裸指针。 reset:重置 unique_ptr,释放当前所管理的对象并接管新的对象。 release:释放对所管理对象的控制权,并返回该指针的裸指针。
int main() { { unique_ptr<Widget> w1(new Widget(1, 2, 3)); w1->print(); auto w2 = unique_ptr<Widget>(new Widget(10, 20, 30)); w1.swap(w2); w1->print(); w2->print(); w2.reset(); //w2=nullptr; //等价于w2.reset() w2.reset(new Widget(11, 22, 33)); if (w2 !
1. unique_ptr的构造函数可以接受原始指针或者一个std::nullptr_t类型的值作为参数,用于初始化它所管理的对象。 2. unique_ptr的get()函数可以用于获取它所管理的原始指针。 3. unique_ptr的reset()函数可以释放它所管理的对象,并重新指向一个新的对象。 4. unique_ptr的release()函数可以释放它所管理的对象,...