C ++向量初始化?

时间:2012-03-03 19:37:17

标签: c++ initialization

  

可能重复:
  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?

我使用了矢量没有任何问题,但我仍然有一个问题。 我总是使用这样的代码,

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

所以,我可以使用:

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

我知道()的确是什么,但差异是什么?在v1中,vector是否会初始化任何整数?

2 个答案:

答案 0 :(得分:1)

首先你的问题:new调用默认构造函数,你不需要“手动”执行此操作。 但是:尝试在C ++中尽可能多地使用值类型。它们不仅速度更快,而且更简单,更安全,因为析构函数在离开范围时会自动调用。 所以写一下

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

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

答案 1 :(得分:0)

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