簡體   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