[英]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.