【Boost】系列02:内存管理之scoped_ptr智能指针
生活随笔
收集整理的這篇文章主要介紹了
【Boost】系列02:内存管理之scoped_ptr智能指针
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
智能指針,stl中有auto_ptr,boost的smart_ptr庫有6種:
scoped_ptr,scoped_array,shared_ptr,shared_array,weak_ptr和intrusive_ptr.
scoped_ptr的拷貝構造函數和賦值操作符聲明為私有,以禁止對智能指針的復制。
例1:
#include <boost/smart_ptr.hpp> #include <iostream> #include <string> using namespace std; using namespace boost;int main() {scoped_ptr<string> sps(new string("Hello Boost"));cout<<sps->size()<<endl; cout<<*sps<<endl;return 0; }輸出
11
Hello Boost
例2:
#include <boost/smart_ptr.hpp> #include <iostream> #include <string> using namespace std; using namespace boost; struct tag_file {tag_file(const char *file_name){cout<<"open file:"<<file_name<<endl;}~tag_file(){cout<<"close file"<<endl;}}; int main() {scoped_ptr<int> spi(new int);if (spi) //用bool語境測試 {*spi = 100;cout<<*spi<<endl;}spi.reset();assert(spi == 0);if (!spi){cout<<"scoped_ptr == null"<<endl;}scoped_ptr<tag_file> spf(new tag_file("a.txt"));return 0; }輸出
100
scoped_ptr == null
open file:a.txt
close file
總結
以上是生活随笔為你收集整理的【Boost】系列02:内存管理之scoped_ptr智能指针的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: typeid在C++中是如何实现的
- 下一篇: [C++11]shared_ptr效率比