📄 smart_ptr.hpp
字号:
#ifndef SMART_PTR_HPP#define SMART_PTR_HPPtemplate<class T>class CountedPtr{ private: //members T* ptr; long* count; //member funcfions void dispose() { if(--*count==0) { delete ptr; delete count; } } public: explicit CountedPtr(T* p=0):ptr(p),count(new long(1)){}; CountedPtr(const CountedPtr<T>& p) throw():ptr(p.ptr),count(p.count) { ++*count; } ~CountedPtr()throw() { dispose(); } CountedPtr<T>& operator=(const CountedPtr<T>& p) throw() { if(this!=&p) { dispose(); ptr=p.ptr; count=p.count; ++*count; } return *this; } T& operator*() const throw() { return *ptr; } T* operator->() const throw() { return ptr; }};#endif
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -