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 notWhat's the difference between CArray and CArray ?)。

我的问题现在是:是否存在ARG_TYPE不是TYPEconst TYPE&的CArray合理使用案例,例如另一个类?这些用法的原因是什么?

最佳答案

我的猜测是,它应该与继承层次结构有关。

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

CArray<D, const B&> myArray;

您可能希望将基本class作为接收参数,该参数可以从派生的const接收class引用。

09-06 19:51