Bloomberg LP Interview Question
Software Engineer / DevelopersCountry: United States
Interview Type: Phone Interview
Wikipedia says
{a smart pointer is an abstract data type that simulates a pointer while providing additional features, such as automatic memory management or bounds checking. }
With the line
{p2=p1;}
there may be different behaviors, since "smart pointer" is a generic concept. A shallow copy means that the pointer value is copied and still points to the same contents. "Deep copy" means that the contents of the pointer are copied to the new pointer. Smart pointers don't necessarily behave the way that plain pointers (in whatever language you're using) would with the same syntax.
To make a class behave like a pointer, we need to overload two operators: * and ->. If the interviewer mean reference-counted smart pointer(shared_ptr in C++11), then we need to implement reference counting whenever a copy is made(copy ctor, copy assignment operator) or destroyed(dtor).
If the interviewer mean uniquely-owned smart pointer(unique_ptr in C++11), then copy is not allowed but move. There could be a move ctor and move assignment operator.
To make a class behave like a pointer, we need to overload two operators: * and ->. If the interviewer mean reference-counted smart pointer(shared_ptr in C++11), then we need to implement reference counting whenever a copy is made(copy ctor, copy assignment operator) or destroyed(dtor).
If the interviewer mean uniquely-owned smart pointer(unique_ptr in C++11), then copy is not allowed but move. There could be a move ctor and move assignment operator.
Wikipedia says
- bobthrollop April 21, 2014{a smart pointer is an abstract data type that simulates a pointer while providing additional features, such as automatic memory management or bounds checking. }
With the line
{p2=p1;}
there may be different behaviors, since "smart pointer" is a generic concept. A shallow copy means that the pointer value is copied and still points to the same contents. "Deep copy" means that the contents of the pointer are copied to the new pointer. Smart pointers don't necessarily behave the way that plain pointers (in whatever language you're using) would with the same syntax.