如何做一个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
中的globalVector
,可能会在析构函数被调用,并在使用的内存std::string
删除的,还有制作globalVector[0]
堆满了垃圾std::string
的后DoStuff
叫?
果壳,我基本上是问,当std::vector
的拷贝构造函数被调用,怎么在里面复制的元素?