繁体   English   中英

防止默认构造数组元素

[英]Prevent default construction of array elements

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);

好吧,如果这对您来说确实是一个问题,请不要使用数组。 使用默认构造函数的std::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) };

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM