В MFC CArray, каковы причины использовать другой тип шаблона по умолчанию? - PullRequest
8 голосов
/ 14 июля 2011

Класс MFC CArray имеет два параметра шаблона (от MSDN ):

template < class TYPE, class ARG_TYPE = const TYPE& > 
class CArray
...

Параметром по умолчанию для ARG_TYPE является const TYPE&, и некоторые вопросы по SO задают вопрос, когда использовать тип, отличный от значения по умолчанию (например, Если ARG_TYPE для CArray должен быть постоянным и не , или В чем разница между CArray и CArray? ).

Мои вопросы сейчас: Есть ли разумные варианты использования CArray, где ARG_TYPE не TYPE или const TYPE&, например другой класс? Каковы причины такого использования?

Ответы [ 2 ]

2 голосов
/ 14 июля 2011

Я думаю, это должно быть связано с иерархией наследования.

struct B {};
struct D : B {};

CArray<D, const B&> myArray;

Возможно, вы захотите использовать в качестве принимающего аргумента базу class, которая может получить ссылку const из производного class.

1 голос
/ 20 июля 2011

Мой лучший пример - CArray <CString, LPCTSTR>.На самом деле, я помню, CArray <CString, CString&> работал не очень хорошо ...

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...