有什麼應當爲CARRAY的ARG_TYPE是const&或不
CArray<MyClass, MyClass> MyArray
CArray<MyClass, const MyClass & > MyArray
有什麼應當爲CARRAY的ARG_TYPE是const&或不
CArray<MyClass, MyClass> MyArray
CArray<MyClass, const MyClass & > MyArray
MyClass總是被複制到數組中。但是第一種形式將它複製兩次:第一次將其作爲參數給予Add或SetAt函數時,第二次在內部給出。 用第二種形式避免第一個副本。
你需要有accessable拷貝構造函數中MyClass
這兩條線之間的區別。在第一種情況下,和MyClass
會按值傳遞(複製)CArray
(例如CArray::Add
)的一些成員。
我相信這仍然在內部拷貝,並且使用CArray分配內存的方式。您可以避免額外的副本,但您仍然需要一個可公開訪問的副本運算符。 – Nick 2010-11-10 19:47:10
我很好奇,如果連第二行會工作... – 2010-11-10 19:21:50
是的,確實如此,我相信第二種形式是在VS2010的類的默認模板類型(即:CARRAY擴展到CARRAY )。 –
Nick
2010-11-10 19:40:30