Katkat

Implement a reference-counted smart pointer

AuroraSoftware Engineer · Technical Screen

Last 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-allocated T*.
  • Use RAII: the managed object must be deleted exactly once when the last SharedPtr owning 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() const
  • size_t use_count() const
  • void 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.