【发布时间】:2014-07-24 11:19:27
【问题描述】:
我有课
class A {
public:
A(){cout<<"C";}
~A(){cout<<"D";}
};
int main(){
unique_ptr<A> a(new A[5]); // - doesn't work
unique_ptr<A> a(new A[1]); // - doesn't work
unique_ptr<A> a(new A); // - works
}
为什么会这样?
我猜是关于移动构造函数(因为析构函数不能自动创建),但是为什么我们这里需要移动构造函数呢?
和有什么区别:
unique_ptr<A> a(new A[1]); // - doesn't work
unique_ptr<A> a(new A); // -works
【问题讨论】:
-
你明白
A和A[]的区别吗? -
请永远写“不起作用”,那没用。要么编译失败(什么错误消息?),要么崩溃(根据调试器在哪里?),或者它产生了意外的结果(哪个,以及预期的结果?),等等。
-
问题标题太可怕了。
标签: c++ unique-ptr move-constructor