【发布时间】:2011-07-14 08:20:00
【问题描述】:
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 的合理用例,例如另一个班级?这些用法的原因是什么?
【问题讨论】:
-
不是您问题的答案,但请勿使用
CArray。这是一个可怕的类,它将使用memcpy而不是复制构造来复制其元素。因此,如果您使用它来保存包含指针的对象数组,您的应用程序将崩溃。请改用std::vector。 -
我正在寻找不使用 CArray 并说服同事使用 std::vector 的论据,我想知道这个奇怪之处。 CMap 更可怕的是有 4 个模板参数和一种复杂的方法来确定地图中的排序顺序......