C++ Primer 学习笔记_89_用于大型程序的工具 --异常处理[续2](二)

2015-07-24 07:07:52 · 作者: · 浏览: 97
对象在定义pi的块的末尾删除;如果发生异常,则iP也超出作用域,析构函数将自动运行iP的析构函数作为异常处理的一部分;如果iP是全局对象,就在程序末尾删除iP引用的对象。



4、使用auto_ptr对象

auto_ptr类定义了解引用操作符(*)和箭头操作符(->)的重载版本,因为auto_ptr定义了这些操作符,所以可以用类似于使用内置指针的方式使用auto_ptr对象:

    auto_ptr
  
    strPtr(new string("HELLO!"));
    cout << *strPtr << endl;

    *strPtr = "TRex";
    string s = *strPtr;
    cout << s << endl;

    if (strPtr -> empty())
    {
        cout << "Empty!" << endl;
    }
    else
    {
        cout << "Not Empty!" << endl;
    }

  

auto_ptr的主要目的,在保证自动删除auto_ptr对象引用的对象的同时,支持普通指针式行为。正如我们所见,自动删除该对象这一事实导致在怎样复制和访问它们的地址值方面,auto_ptrs与普通指针明显不同