【发布时间】:2019-03-01 03:15:05
【问题描述】:
有什么区别
std::vector<int> v;
和
std::vector<int> v = std::vector<int>();
直观地说,我永远不会使用第二个版本,但我不确定是否有任何区别。在我看来,第二行只是一个默认构造函数,用于构建一个临时对象,然后由移动赋值运算符移动。
我想知道第二行是否不等同于
std::vector<int> v = *(new std::vector<int>());
因此导致向量本身在堆上(动态分配)。如果是这种情况,那么大多数情况下可能会首选第一行。
这些代码行有何不同?
【问题讨论】:
-
即使有临时对象,它们也不会在堆上。
标签: c++ constructor initialization