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