可能重复:
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是否会初始化任何整数?
答案 0 :(得分:1)
首先你的问题:new调用默认构造函数,你不需要“手动”执行此操作。 但是:尝试在C ++中尽可能多地使用值类型。它们不仅速度更快,而且更简单,更安全,因为析构函数在离开范围时会自动调用。 所以写一下
std::vector<int> v; // Calls default constructor
如果你真的需要堆,尝试使用智能指针,如shared_ptr和unique_ptr,这样你就不会忘记调用delete。 (并且删除也会调用析构函数,无需手动执行此操作。)
答案 1 :(得分:0)
两种说法都是一样的。在两种情况下都将调用不带参数的构造函数。