-
由于auto_ptr定义中“用一般指针构造一个auto_ptr”的构造函数被声明为explicit(拒绝隐式变换),所以一下的方式是错误的:
auto_ptr<int> ptr = new int(0); // 错
必须这样:
auto_ptr<int> ptr(new int(0)); //正确
2.拥有权会转移
auto_ptr<classA> ptr1(new classA) ;
auto_ptr<classA> ptr2(new classA) ;
ptr2=ptr1;
ptr1不再拥有。ptr2会更新拥有。
3.作为参数 如: fuc(auto_ptr<classA>)
auto_ptr<classA> ptr1(new classA) ;
fuc(ptr1);
此时ptr1不在拥有。
4.不可以作为const reference参数 如: fuc(const auto_ptr<classA>&)
auto_ptr<classA> ptr1(new classA) ;
fuc(ptr1); //error 编译错误
原因是拥有转移与const reference矛盾。
4.不可以共享指针 ,不可以用到数组。