Implement a reference-counted smart pointer | Aurora Interview Question