Files
CSCI-1200/lectures/27_garbage_collection/shared_ptr1.cpp
2025-04-29 14:42:52 -04:00

29 lines
932 B
C++

#include <iostream>
#include <memory>
int main(){
std::shared_ptr<int> age(new int(40));
std::cout << "age is " << *age << std::endl;
// you can never do this, which is assigning a smarter pointer to a raw pointer.
// int * temp = age;
{
std::shared_ptr<int> temp = age;
std::cout << "age is " << *temp << std::endl;
std::cout << "the use count is : " << age.use_count() << std::endl;
}
std::cout << "the use count is : " << age.use_count() << std::endl;
// give up my ownership, it decreases the reference count of the managed object by one.
// if that shared pointer was the last owner (i.e., reference count becomes zero), the object is deleted.
// the shared_ptr itself is now empty (i.e., it holds nullptr).
age.reset();
std::cout << "the use count is : " << age.use_count() << std::endl;
// question: what happens if we print age here:
// std::cout << "age is " << *age << std::endl;
return 0;
}