CCI_chapter 13C++
13.9Write a smart pointer (smart_ptr) class
template < class T> class SmartPoint{ public : SmartPoint(T *ref){ ref_ = ref; count_ = (unsigned int *) malloc ( sizeof (unsigned int )); *count_ = 1; } SmartPoint(SmartPoint<T> &sptr){ ref_ = sptr.ref_; count_ = sptr.count_; ++(*count_); } SmartPoint<T>& operator =(SmartPoint<T> &sptr) { if ( this != sptr){ ref_ = sptr.ref_; count_ = sptr.count_; ++(*count_); } return * this ; } ~SmartPoint() { --(*count_); if (*count_ == 0) { delete ref_; free (count_); ref_ = NULL; count_ = NULL; } } T getValue(){ rturn *ref_; } private : T* ref_; unsigned int *count_; }; |
--------------------------------------------------------------------天道酬勤!
【推荐】还在用 ECharts 开发大屏?试试这款永久免费的开源 BI 工具!
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步