#include <iostream>
#include <memory>
class MyClass {
public:
MyClass() { std::cout << "MyClass Constructor" << std::endl; }
~MyClass() { std::cout << "MyClass Destructor" << std::endl; }
};
void useSharedPtr(std::shared_ptr<MyClass> ptr) {
std::cout << "Using shared_ptr" << std::endl;
}
int main() {
std::shared_ptr<MyClass> ptr1 = std::make_shared<MyClass>();
std::shared_ptr<MyClass> ptr2 = ptr1; // Shared ownership
useSharedPtr(ptr1);
std::cout << "Reference count: " << ptr1.use_count() << std::endl; // Outputs: 2
return 0;
}