element* elements = new element[size.x];
这将使用默认构造函数构建X元素。在我的程序中,我想用不同的构造函数参数构造每个元素,如:
for(int i=0; i < size.x; ++i)
elements[i] = element(i);
有没有办法防止和不必要的默认实例(我不想实现)和Operator=
的不必要的调用?
答案 0 :(得分:1)
如果它不会损害您的设计,您可以使用双指针来实现此
element ** elements = new element * [size.x];
for(int i=0; i < size.x; ++i)
elements[i] = new element(i);
答案 1 :(得分:0)
好吧,如果这确实是一个问题,请不要使用数组。使用std::vector
和默认构造函数。
显式向量(const Allocator&amp; = Allocator()); 默认构造函数:构造一个空向量,没有内容,大小为零。
答案 2 :(得分:0)
你可以复制 - 初始化自动数组,通常会使用大括号初始化器优化直接就地构造:
elements e[] = { elements(1,2,3), elements(), elements('a', true) };
但这对动态数组不起作用。在C ++ 11中,您可以指定初始化列表,但这也是复制初始化,而不是直接初始化:
elements * e = new elements[2] { elements(1,2,3), elements('a', true) };