2010-11-10 32 views
0

有什麼應當爲CARRAY的ARG_TYPE是const&或不

CArray<MyClass, MyClass> MyArray 

CArray<MyClass, const MyClass & > MyArray 
+0

我很好奇,如果連第二行會工作... – 2010-11-10 19:21:50

+0

是的,確實如此,我相信第二種形式是在VS2010的類的默認模板類型(即:CARRAY 擴展到CARRAY )。 – Nick 2010-11-10 19:40:30

回答

1

MyClass總是被複制到數組中。但是第一種形式將它複製兩次:第一次將其作爲參數給予Add或SetAt函數時,第二次在內部給出。 用第二種形式避免第一個副本。

1

你需要有accessable拷貝構造函數中MyClass這兩條線之間的區別。在第一種情況下,和MyClass會按值傳遞(複製)CArray(例如CArray::Add)的一些成員。

+0

我相信這仍然在內部拷貝,並且使用CArray分配內存的方式。您可以避免額外的副本,但您仍然需要一個可公開訪問的副本運算符。 – Nick 2010-11-10 19:47:10

相關問題