memory
来自「sgi公布的STL标准程序库的源代码」· 代码 · 共 90 行
TXT
90 行
/* * Copyright (c) 1997 * Silicon Graphics Computer Systems, Inc. * * Permission to use, copy, modify, distribute and sell this software * and its documentation for any purpose is hereby granted without fee, * provided that the above copyright notice appear in all copies and * that both that copyright notice and this permission notice appear * in supporting documentation. Silicon Graphics makes no * representations about the suitability of this software for any * purpose. It is provided "as is" without express or implied warranty. * */#ifndef __SGI_STL_MEMORY#define __SGI_STL_MEMORY#include <stl_algobase.h>#include <stl_alloc.h>#include <stl_construct.h>#include <stl_tempbuf.h>#include <stl_uninitialized.h>#include <stl_raw_storage_iter.h>// Note: auto_ptr is commented out in this release because the details// of the interface are still being discussed by the C++ standardization// committee. It will be included once the iterface is finalized.#if 0#if defined(_MUTABLE_IS_KEYWORD) && defined(_EXPLICIT_IS_KEYWORD) && \ defined(__STL_MEMBER_TEMPLATES)__STL_BEGIN_NAMESPACEtemplate <class X> class auto_ptr {private: X* ptr; mutable bool owns;public: typedef X element_type; explicit auto_ptr(X* p = 0) __STL_NOTHROW : ptr(p), owns(p) {} auto_ptr(const auto_ptr& a) __STL_NOTHROW : ptr(a.ptr), owns(a.owns) { a.owns = 0; } template <class T> auto_ptr(const auto_ptr<T>& a) __STL_NOTHROW : ptr(a.ptr), owns(a.owns) { a.owns = 0; } auto_ptr& operator=(const auto_ptr& a) __STL_NOTHROW { if (&a != this) { if (owns) delete ptr; owns = a.owns; ptr = a.ptr; a.owns = 0; } } template <class T> auto_ptr& operator=(const auto_ptr<T>& a) __STL_NOTHROW { if (&a != this) { if (owns) delete ptr; owns = a.owns; ptr = a.ptr; a.owns = 0; } } ~auto_ptr() { if (owns) delete ptr; } X& operator*() const __STL_NOTHROW { return *ptr; } X* operator->() const __STL_NOTHROW { return ptr; } X* get() const __STL_NOTHROW { return ptr; } X* release const __STL_NOTHROW { owns = false; return ptr }};__STL_END_NAMESPACE#endif /* mutable && explicit && member templates */#endif /* 0 */#endif /* __SGI_STL_MEMORY */// Local Variables:// mode:C++// End:
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?