📄 auto_ptr.html
字号:
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"><html><head> <meta name="generator" content= "HTML Tidy for Linux/x86 (vers 1 September 2005), see www.w3.org"> <title>auto_ptr</title> <link href="../cppreference.css" rel="stylesheet" type="text/css"></head><body><table> <tr> <td> <div class="body-content"> <div class="header-box"> <a href="../index.html">cppreference.com</a> > <a href= "index.html">Miscellaneous C++</a> > <a href= "auto_ptr.html">auto_ptr</a> </div> <div class="name-format"> auto_ptr </div> <div class="syntax-name-format"> Syntax: </div> <pre class="syntax-box"> #include <memory> auto_ptr<class <a href="../containers.html">TYPE</a>> name</pre> <p>The auto_ptr class allows the programmer to create pointers that point to other objects. When auto_ptr pointers are destroyed, the objects to which they point are also destroyed.</p> <p>The auto_ptr class supports normal pointer operations like =, *, and ->, as well as two functions <a href= "../containers.html">TYPE</a>* get() and <a href= "../containers.html">TYPE</a>* release(). The get() function returns a pointer to the object that the auto_ptr points to. The release() function acts similarily to the get() function, but also relieves the auto_ptr of its memory destruction duties. When an auto_ptr that has been released goes out of scope, it will not call the destructor of the object that it points to.</p> <p><strong>Warning</strong>: It is generally a <strong>bad idea</strong> to put auto_ptr objects inside C++ STL containers. C++ containers can do funny things with the data inside them, including frequent reallocation (when being copied, for instance). Since calling the destructor of an auto_ptr object will free up the memory associated with that object, any C++ container reallocation will cause any auto_ptr objects to become invalid.</p> <div class="related-examples-format"> Example code: </div> <div class="related-examples"> <pre class="example-code"> #include <memory> using namespace std; class MyClass { public: MyClass() {} // nothing ~MyClass() {} // nothing void myFunc() {} // nothing }; int main() { auto_ptr<MyClass> ptr1(new MyClass), ptr2; ptr2 = ptr1; ptr2->myFunc(); MyClass* ptr = ptr2.get(); ptr->myFunc(); return 0; } </pre> </div> </div> </td> </tr> </table></body></html>
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -