0

代码一:

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

代码二:

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

代码三:

vector<int> intVector();//compile error?

代码四:

vector<int> intVector;  

我的问题:

(1)是“vector intVector”调用默认构造函数吗?
(2) 当代码1与代码2相似时,为什么代码3编译错误?

4

1 回答 1

2

你问:

(1)是“vector intVector”调用默认构造函数吗?
(2) 当代码1与代码2相似时,为什么代码3编译错误?

关于(1),是的,std::vector有一个用户定义的默认构造函数,在没有提供构造函数参数时使用。

关于(2),您的代码 3 本身不应给出错误,但它是函数的声明,而不是变量的声明。因此,如果您将它用作变量,那么您可能会在该用法上遇到编译错误。

您的代码示例 4 是您通常应该如何使用std::vector. 由于多种原因,std::vector动态分配 与几乎没有意义new,并且(相对而言)与 相关的巨大成本new。所以只需使用一个直接的std::vector对象,它会为您处理内存分配和释放。

于 2013-04-13T10:16:41.793 回答