智能指针scoped_ptr
对应C++11中的 unique_ptr #include <iostream> #include <memory> class foo { public: foo() { std::cout<<"constructor"<<std::endl;} ~foo() { std::cout<<"destructor"<<std::endl; } void doit() { std::cout<<"do"<<std::endl; } }; int main() { std::unique_ptr<foo> sf(new foo); sf->doit(); (*sf).doit(); sf.reset(new foo); sf->doit(); return 0; } scoped_ptr的所有权更加严格,不允许转让,对其赋值和拷贝都是不合法行为,因而显得更轻巧和快捷。 scoped_ptr重载了operator*()和operator->()解引用操作符*和箭头操作符->,因此可以把scoped_ptr对象如同指针一样使用。如果scoped_ptr保存的空指针,那么这两个操作的行为未定义。 scoped_ptr不能在两个scoped_ptr之间、scoped_ptr与原始指针之间或空指针之间进行了相等或不相等测试。operator ==和operator !=都被声明为私有。