温馨提示×

C++ reset对指针影响

c++
小樊
85
2024-07-17 19:06:49
栏目: 编程语言

在C++中,reset()函数用于将指针重置为nullptr或者指向另一个对象。当调用reset()函数时,原来指针所指向的对象会被释放,然后指针会被重置为nullptr或者指向新的对象。

例如:

#include <iostream>
#include <memory>

int main() {
    std::shared_ptr<int> ptr(new int(10));
    std::cout << *ptr << std::endl; // 输出 10

    ptr.reset(new int(20));
    std::cout << *ptr << std::endl; // 输出 20

    ptr.reset();
    if (ptr == nullptr) {
        std::cout << "ptr 已重置为 nullptr" << std::endl;
    }

    return 0;
}

在上面的示例中,通过reset()函数将指针ptr的值重置为了一个新的int对象的地址,然后再次调用reset()将指针ptr重置为nullptr。reset()函数会释放原来指针所指向的对象,所以在调用reset()之后,原来指针所指向的对象会被销毁。

0