. What is a smart pointer?

. What is a smart pointer?

A smart pointer is an object that acts, looks and feels like a normal
pointer but offers more functionality. In C++, smart pointers are
implemented as template classes that encapsulate a pointer and override
standard pointer operators. They have a number of advantages over
regular pointers. They are guaranteed to be initialized as either null
pointers or pointers to a heap object. Indirection through a null pointer is
checked. No delete is ever necessary. Objects are automatically freed
when the last pointer to them has gone away. One significant problem with these smart pointers is that unlike regular pointers, they don’ t
respect inheritance. Smart pointers are unattractive for polymorphic

class smart_pointer
smart_pointer(); // makes a null pointer
smart_pointer(const X& x) // makes pointer to copy
of x

               X& operator *( ); 
               const X& operator*( ) const; 
               X* operator->() const; 

               smart_pointer(const smart_pointer  &); 
               const  smart_pointer    &  operator  =(const 

This class implement a smart pointer to an object of type X. The
object itself is located on the heap. Here is how to use it:
smart_pointer p= employee(“Harris”,1333);
Like other overloaded operators, p will behave like a regular