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 ?)。我的问题现在是:是否存在ARG_TYPE不是
TYPE
或const TYPE&
的CArray合理使用案例,例如另一个类?这些用法的原因是什么? 最佳答案
我的猜测是,它应该与继承层次结构有关。
struct B {};
struct D : B {};
CArray<D, const B&> myArray;
您可能希望将基本
class
作为接收参数,该参数可以从派生的const
接收class
引用。