ch16 string and smart pointer examples