MFC CArray类有两个模板参数(来自MSDN):
template < class TYPE, class ARG_TYPE = const TYPE& >
class CArray
...
ARG_TYPE
的默认参数为const TYPE&
,有关SO的一些问题会询问何时使用与默认类型不同的类型(例如Should the ARG_TYPE for a CArray be const & or not或What's the difference between CArray and CArray ?)。
我现在的问题是:是否存在合理的CArray用例,其中ARG_TYPE不是TYPE
或const TYPE&
,例如另一堂课?这些用法的原因是什么?
答案 0 :(得分:2)
我的猜测是,它应该与继承层次结构有关。
struct B {};
struct D : B {};
CArray<D, const B&> myArray;
您可能希望将基础class
作为接收参数,该参数可以从派生的const
接收class
引用。
答案 1 :(得分:1)
我最好的例子是CArray <CString, LPCTSTR>
。事实上,我记得CArray <CString, CString&>
效果不佳......