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::stringin 的指针填充globalVector,可能会调用析构函数并std::string删除使用的内存,用于globalVector[0]填充垃圾std::string的 afterDoStuff是叫?
一个坚果壳,我基本上是在问,当std::vector调用复制构造函数时,里面的元素是如何复制的?