当scoped_ptr被销毁时,它对它所拥有的指针调用delete 。
scoped_ptr的用法与普通的指针没什么区别;最大的差别在于你不必再记得在指针上调用delete,还有复制是不允许的。
不需要手工删除
让我们看一个程序,它使用scoped_ptr来管理std::string指针。注意这里没有对delete的调用,因为scoped_ptr是一个自动变量,它会在离开作用域时被销毁。
#include "boost/scoped_ptr.hpp"
#include <string>
#include <iostream>
int main() {
  {
  boost::scoped_ptr<std::string> 
  p(new std::string("Use scoped_ptr often."));
  // 打印字符串的值
  if (p)
    std::cout << *p << '/n';
    
  // 获取字符串的大小
  size_t i=p->size();
  // 给字符串赋新值
  *p="Acts just like a pointer";
  
  } // 这里p被销毁,并删除std::string 
}
                    
                
                
            
        
浙公网安备 33010602011771号