首页 > 试题广场 >

(多选题)auto_ptr 类使用必须满足下列限制:

[不定项选择题]
(多选题)auto_ptr 类使用必须满足下列限制:
  • 不要使用 auto_ptr 对象保存指向静态分配对象的指针。
  • 不要使用两个 auto_ptrs 对象指向同一对象。
  • 不要使用 auto_ptr 对象保存指向动态分配数组的指针。
  • 不要将 auto_ptr 对象存储在容器中。

创建auto_ptr对象时注意的几个问题

(1) auto_ptr的构造函数为explicit,阻止了一般指针隐式类型转换为auto_ptr的构造,所以如下的创建方式是编译不过的。
(2) 由于auto_ptr对象析构时会删除它所拥有的指针,所以使用时避免多个auto_ptr对象管理同一个指针。如下的使用方法应该避免。
(3)auto_ptr的内部实现中,析构函数中删除对象使用delete而不是delete[],所以auto_ptr不能用来管理数组指针。
(4)C++中对一个空指针NULL执行delete操作是安全的。所以在auto_ptr的析构函数中无须判断它所拥有指针是否为空。
(5) C++的STL容器对于容器元素类型的要求是有值语义,即可以赋值和复制。auto_ptr在赋值和复制时都进行了特殊操作,所以auto_ptr对象不能作为STL容器元素。
发表于 2019-05-08 13:06:55 回复(0)
不要使用 auto_ptr 对象保存指向静态分配对象的指针。
不要使用两个 auto_ptrs 对象指向同一对象。
不要使用 auto_ptr 对象保存指向动态分配数组的指针。
不要将 auto_ptr 对象存储在容器中。
发表于 2021-07-07 11:01:02 回复(1)