我想創建一個對象數組。目前我正在使用std::string a[10]
類型的語法,但我不確定這是否是最佳做法。在C++中初始化對象數組
首先,std::string a[10]
實際調用構造函數併爲10個字符串分配內存?我認爲std::string a
聲明a
但不綁定對象(我可能是錯的)。那麼std::string a[10]
?
其次,在通過std::string a[10]
「聲明」數組之後(如果我沒有弄錯聲明),如何初始化元素?看到下面的我的困惑。
這給了錯誤:
std::mutex a[100];
for (int i = 0; i<100; i++)
{
a[i] = std::mutex(); // error;
}
,而這是好的:
std::thread a[100];
for (int i = 0; i<100; i++)
{
a[i] = std::thread(func, NULL);
}
這混亂的我,爲什麼這兩個片段給出不同的結果。第二個片段只是將對象複製到已創建的a[i]
?如果是這樣,我可能會做錯事。
C++不是Java ... – Brian
@Brian是啊我得到了基本的錯誤.. – qweruiop
在Java中,T a [100]; a [0] = new T();'產生100個字符串,然後製作一個氣球並將第一個字符串附加到氣球。在C++中,'T a [100]; a [0] = T();'製造100個氣球,然後製造另一個氣球,彈出100個氣球中的第一個,並將新氣球放置在其位置。你不能彈出互斥。 –