auto_ptr全解
来源:互联网 发布:oracle 数据库用户权限 编辑:程序博客网 时间:2024/05/16 04:19
std::auto_ptr
1.std::auto_ptr::auto_ptr
explicit auto_ptr (X* p=0) throw(); auto_ptr (auto_ptr& a) throw();template<class Y> auto_ptr (auto_ptr<Y>& a) throw();auto_ptr (auto_ptr_ref<X> r) throw();
Explain:
Constructs an auto_ptr object either from a pointer or from anotherauto_ptr object.
Since auto_ptr objects take ownership of the pointer they point to, when a newauto_ptr is constructed from another auto_ptr, the former ownerreleases it.
Example:
#include <iostream>#include <memory>int main () { std::auto_ptr<int> p1 (new int); *p1.get()=10; std::auto_ptr<int> p2 (p1); std::cout << "p2 points to " << *p2 << '\n'; // (p1 is now null-pointer auto_ptr) return 0;}
Output:p2 points to 10
2.std::auto_ptr::~auto_ptr()
~auto_ptr() throw();
Explain:
Destroy auto_ptr
Deallocates the block of memory the object "points to" using delete (delete get()) and destructs the object.3.std::auto_ptr::get
X* get() const throw();Expalin:
Get pointer
Returns a pointer to the object pointed by the auto_ptr object, if any, or zero if it does not point to any object.Example:
#include <iostream>#include <memory>int main () { std::auto_ptr<int> p (new int); *p.get() = 100; std::cout << "p points to " << *p.get() << '\n'; return 0;}
4.std::auto_ptr::reset
void reset (X* p=0) throw();Explain:
Deallocate object pointed and set new value
Destructs the object pointed by the auto_ptr object, if any, and deallocates its memory (by callingoperator delete). If a value for p is specified, the internal pointer is initialized to that value (otherwise it is set to thenull pointer).To only release the ownership of a pointer without destructing the object pointed by it, use member functionrelease instead.
Example:
#include <iostream>#include <memory>int main () { std::auto_ptr<int> p; p.reset (new int); *p=5; std::cout << *p << '\n'; p.reset (new int); *p=10; std::cout << *p << '\n'; return 0;}
Output : 5 10
5.std::auto_ptr::release
X* release() throw();Explain:
Release pointer
Sets the auto_ptr internal pointer to null pointer (which indicates it points to no object) without destructing the object currently pointed by theauto_ptr.To force a destruction of the object pointed, use member function reset() instead.
The function returns a pointer to the object it pointed before the call, which is no longer its responsibility to destruct.
Example:
#include <iostream>#include <memory>int main () { std::auto_ptr<int> auto_pointer (new int); int * manual_pointer; *auto_pointer=10; manual_pointer = auto_pointer.release(); std::cout << "manual_pointer points to " << *manual_pointer << '\n'; // (auto_pointer is now null-pointer auto_ptr) delete manual_pointer; return 0;}Output:
manual_pointer points to 10
- auto_ptr全解
- auto_ptr:
- Auto_ptr
- auto_ptr
- auto_ptr
- auto_ptr
- auto_ptr
- auto_ptr
- auto_ptr
- auto_ptr
- auto_ptr
- auto_ptr
- Auto_Ptr
- auto_ptr
- auto_ptr
- auto_ptr
- auto_ptr
- auto_ptr
- json jsonp分析
- css 背景透明,文字不透明,alpha滤镜,opacity,position:relative;
- CSS实现半透明效果实现及兼容性
- js简单实现div遮罩层
- div css背景颜色半透明 文字不透明兼容ie、火狐等浏览器
- auto_ptr全解
- CSS实现Div层背景半透明而内容不透明效果
- div css float浮动用法(left right)
- 网站漂浮广告代码收藏
- js实现主页漂浮图片
- 两边漂浮图片的一段JS
- JS实现拖拽
- CSS text-align 属性
- 扩充当前array大小