what is a smart pointer?Explain whether Member Functions should be used in Smart Pointer class?