编程文汇

[RAAI]智能指针:scoped_ptr

cxx
#1

就是对栈上的变量进行释放。感觉这个有些多余,在栈上时,我们一般用下面这种形式:

ClassA obj;

而不是new对象。不管如何,看一下用法。

#include <boost/scoped_ptr.hpp>
#include <iostream>

int main()
{
  boost::scoped_ptr<int> p{new int{1}};
  std::cout << *p << '\n';
  p.reset(new int{2});
  std::cout << *p.get() << '\n';
  p.reset();
  std::cout << std::boolalpha << static_cast<bool>(p) << '\n';
}
#include <boost/scoped_array.hpp>

int main()
{
  boost::scoped_array<int> p{new int[2]};
  *p.get() = 1;
  p[1] = 2;
  p.reset(new int[3]);
}
0 Likes