template <typename T> class guard { private: T resource; public: guard& operator=(guard &)=delete; guard(guard &)=delete; guard()=delete; guard(T temp):resource(temp){} ~guard(){delete resource;std::cout<<"free resource ";} }; int main() { int *p= new int; guard<int*> guard_int(p); std::cin>>(*p); std::cout<<*p<<std::endl; return 0; }
说明 禁止了拷贝和复制是防止在超出对象生命期的地方使用,禁止默认构造是防止随便释放资源。