Vector <T>调用的构造函数的奇怪问题

Chr*_*ian 1 c++ constructor vector

vector< MyObject<MyType> > ObjectList(100, MyObject<MyType>(param1));
Run Code Online (Sandbox Code Playgroud)

MyObject在内部创建了一个名为"storage"的成员,它是一个使用堆上的MyType数组.

但是使用上面的代码行,ObjectList中的每个项目都有"存储"指向相同的内存位置(基本上共享存储).

当我使用手动分配堆栈上的列表时,不会发生此问题

MyObject<MyType> ObjectList[100] = { MyObject<MyType>(param1), 
                                     MyObject<MyType>(param1), ...};
Run Code Online (Sandbox Code Playgroud)

当我用上面的行声明MyObject时,每个存储都有自己的内存位置.

Naw*_*waz 9

但是使用上面的代码行,ObjectList中的每个项目都有"存储"指向相同的内存位置(基本上共享存储).

如果你已经编写了适当的拷贝构造函数MyObject(MyType如果它也包含指针),那么这不会发生,因为ObjectList用你传递的副本初始化.

通过"正确",我的意思是copy-ctor,它执行深拷贝,而不是浅拷贝!

看到这个:

深拷贝和浅拷贝之间有什么区别?