2012-03-03 180 views
0

可能重复:
Do the parentheses after the type name make a difference with new?
What do the following phrases mean in C++: zero-, default- and value-initialization?C++矢量动初始化

伊夫使用载体而没有任何问题,但还是有疑问的。 我总是用这样的代码,

vector<int>* v1 = new vector<int>; 

这样,我可以使用:

vector<int>* v2 = new vector<int>(); 

我知道什么()做,但什么区别?在v1中,矢量是否曾初始化任何整数?

+7

为什么使用'new'? 'vector v1'有什么问题;'? – 2012-03-03 19:38:42

回答

1

首先你的问题:新的调用默认的构造函数,你不需要做“手动”。 但是:尽量在C++中尽量使用值类型。它们不仅更快,而且更容易和更安全,因为析构函数在离开范围时会自动调用。 所以只写

std::vector<int> v; // Calls default constructor 

如果你真的需要堆,尝试使用智能指针比如shared_ptr的和的unique_ptr,这样,你不能忘记调用删除。 (并删除也称为析构函数,不需要手动执行此操作。)

0

两种说法都一样。这两种情况下都会调用不带参数的构造函数。