在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()之后,原來指針所指向的對象會被銷毀。