std::vector<std::string>
调用以下代码时如何初始化自身
std::vector<std::string> original;
std::vector<std::string> newVector = original;
看起来好像复制构造函数会在std::vector<std::string> new
期间被调用newVector = original
,但是std::string
' 是如何被带入的orginal
?它们是复制品还是新品std::string
?内存newVector[0]
也是一样的original[0]
。
我问的原因是说我做了以下
#include <vector>
#include <string>
using namespace std;
vector<string> globalVector;
void Initialize() {
globalVector.push_back("One");
globalVector.push_back("Two");
}
void DoStuff() {
vector<string> t = globalVector;
}
int main(void) {
Initialize();
DoStuff();
}
t
将超出DoStuff
(在非优化构建上)的范围,但如果它t
只是用指向std::string
in 的指针填充globalVector
,可能会调用析构函数并std::string
删除使用的内存,用于globalVector[0]
填充垃圾std::string
的 afterDoStuff
是叫?
一个坚果壳,我基本上是在问,当std::vector
调用复制构造函数时,里面的元素是如何复制的?