reset函数的使用

在C++中,"reset"函数用于智能指针和一些类的成员函数,作用是重新设置对象的状态,释放原有资源并可能分配新的资源。下面分别是从智能指针和一般的类成员函数两个方面解释:

智能指针的 reset 函数:

在 C++ 中,std::shared_ptrstd::unique_ptr 等智能指针提供了 reset 成员函数,用于重新设置指针的状态。以下是 std::shared_ptrstd::unique_ptr 中的 reset 函数的用法:

void test_reset(){
    std::shared_ptr<int> ptr(new int(100));
    std::cout<<"Orginal nmber is: "<<*(ptr.get())<<std::endl;
    ptr.reset(new int(200));
    std::cout<<"Now nmber is: "<<*(ptr.get())<<std::endl;
}
// 输出
// Orginal nmber is: 100
// Now nmber is: 200

主要作用就是管理动态分配的资源,避免内存泄漏。 

一般类成员函数的 reset:

有些类也提供了名为 reset 的成员函数,通常用于重置类的内部状态或释放资源。这个 reset 的具体实现和作用取决于类的设计。

class MyClass {
public:
    MyClass(int value) : data(value) {}

    void reset(int value) {
        data = value;
    }

    void print() {
        std::cout << "Data: " << data << std::endl;
    }

private:
    int data;
};

void test_class_reset(){
    MyClass obj(42);
    obj.print();
    obj.reset(100);
    obj.print();
}
// 输出
// Data: 42
// Data: 100

主要作用是重置对象的内部状态,有利于不创建新对象的情况下改变对象的状态。

此外,reset函数还有一个重要的作用:释放资源

reset() 函数的默认行为是将 shared_ptr 持有的对象释放,并将 shared_ptr 重置为空指针。如果 reset() 不带参数,它将释放当前 shared_ptr 持有的对象,并将其重置为 nullptr

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值