Implement a reference-counted smart pointer
AuroraSoftware Engineer · Technical ScreenLast updated
This question evaluates understanding of C++ resource management, ownership semantics, RAII, and reference counting implementation within the coding and algorithms domain, emphasizing pointer semantics and object lifetime.
Implement a minimal C++ reference-counted smart pointer similar to std::shared_ptr.
Requirements:
- Create a class template
SharedPtr<T>that manages a heap-allocatedT*. - Use RAII: the managed object must be deleted exactly once when the last
SharedPtrowning it is destroyed. - Support:
- Default constructor (null pointer)
- Constructor from raw pointer
T* - Destructor
- Copy constructor / copy assignment (increase reference count)
- Move constructor / move assignment (transfer ownership, leaving the source null)
T& operator*(),T* operator->(),T* get() constsize_t use_count() constvoid reset(T* p = nullptr)- Handle self-assignment correctly and avoid memory leaks/double-free.
You may ignore thread-safety unless you explicitly choose to support it.
Solution walkthrough is for members
Get the full walkthrough with reference code and complexity analysis, plus Kitty Coach at 300 messages a day. Hints, the code runner and community answers stay free.