2

Stroustup の本の 368 ページから抽出されたこのコード スニペットにはタイプミスがあると思います。

template <class X> class std::auto_ptr
{
    template <class Y> struct auto_ptr_ref { /* ... */ }; // helper class
    X * ptr;
    public :
    typedef X element_type;
    explicit auto_ptr(X* p =0) throw() { ptr = 0; }
    auto_ptr (auto_ptr& a) throw() { ptr = a.ptr; a.ptr = 0; } // note: not const auto_ptr&

    /* ... */
};

すべきではない

explicit auto_ptr(X* p =0) throw() { ptr = 0; }

なれ

explicit auto_ptr(X* p =0) throw() { ptr = p; }

代わりは ?

4

2 に答える 2

3

本の正誤表はいくつかの変更を加えています:

第14章:

pg 367-368 最近の標準の変更により、auto_ptr の定義が変更されました。367ページと368ページの最後の段落を差し替えてください...

于 2012-01-22T12:59:29.913 に答える
-3

私はその本を調べましたが、いくつか余分なページがある新しいバージョンを持っています。

とにかく、そのコードは p = 0 と言っており、ptr = p と言って ptr = 0 と同じであるため、正しく見えます。

于 2012-01-22T12:54:51.147 に答える