Bên cạnh tất cả các lợi ích đã biết của việc sử dụng auto_ptrs, auto_ptr là "thực hành tồi tệ nhất" là gì?auto_ptr Bẫy và Cạm bẫy
Tạo bộ lọc STL của auto_ptrs. auto_ptrs không đáp ứng yêu cầu 'CopyConstructable'. Xem thêm “Hiệu quả STL” của Scott Meyer, mục 8.
Tạo auto_ptrs của mảng Sau khi hủy, lệnh hủy auto_ptr sử dụng 'xóa' (và không bao giờ 'xóa []') để tiêu diệt đối tượng sở hữu, vì vậy mã này mang lại hành vi không xác định: auto_ptr api (int mới [42]);
Không chăm sóc copy-ctor và op = trong lớp sử dụng thành viên auto_ptr. Người ta có thể ngây thơ nghĩ rằng bằng cách sử dụng các thành viên auto_ptr, người ta không cần triển khai toán tử tạo/gán bản sao cho một lớp. Tuy nhiên, ngay cả một thành viên auto_ptr 'độc tố' một lớp (i. E. Vi phạm các yêu cầu 'CopyConstructable' và 'Assignable'). Các đối tượng của các lớp như vậy sẽ bị hư hại một phần trong quá trình sao chép/chuyển nhượng.
Thậm chí còn có nhiều cạm bẫy auto_ptr nữa không?
Ngoài ra, 'auto_ptr' sẽ không được chấp nhận trong tiêu chuẩn C++ tiếp theo (mà Sutter hy vọng sẽ được chính thức bình chọn sau tháng 3 năm 2011 (http://herbsutter.com/2010/08/28/trip-report-august-2010) -iso-c-standards-meeting /), do đó trở thành C++ 0B cho chúng ta chết-hards). Nếu bạn đã có 'unique_ptr', hãy sử dụng nó. –