В чем разница между этими двумя строками
CArray<MyClass, MyClass> MyArray CArray<MyClass, const MyClass & > MyArray
MyClass всегда копируется в массив.Но первая форма копирует ее дважды: первый раз, когда она передается в качестве параметра функции Add или SetAt, второй раз внутри.Со второй формой вы избегаете первой копии.
В первом случае вам нужно иметь доступный конструктор копирования в MyClass, и MyClass будет передаваться по значению (копироваться) в некоторые члены CArray (например, CArray::Add).
MyClass
CArray
CArray::Add