博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
CArray的参数如何使用,TYPE与ARG_TYPE的解释
阅读量:6983 次
发布时间:2019-06-27

本文共 1022 字,大约阅读时间需要 3 分钟。

hot3.png

CArray的参数如何使用,TYPE与ARG_TYPE的解释

数组---这个C语言中的怪物,自从被直接继承到C++中,无数有识之士们前赴后继、绞尽脑汁的试图寻找一种可以动态增长的替代数据类型。当然,最著名的,应该就是vector向量。但是,它也还是浑身绿毛,迭代的出现,几乎彻底的摧毁了它仅存的一点优点。所以,引入MFC之后,微软斩钉截铁的抛弃了标准C++的模板库。

    CArray是MFC中非常重要的几个类模板之一,其他还有CList、CMap,他们的定义略微有点晦涩,CArray声明如下:

template<class TYPE, class ARG_TYPE>

class CArray : public CObject

从中,我们可以看出来,CArray是继承自CObject,应该属于MFC的体系,看这2个参数:

TYPE:这是一个用来返回的类型,一般来说,它应该和ARG_TYPE一致,但不绝对。

ARG_TYPE:相对于TYPE,它是用来传入的,ARG,我想应该是argument(参数)的意思。

如何来理解这两个参数呢?

举个简单的例子吧,定义一个以CString为元素的动态数组:

tpyedef CArray<CString, CString&>             CArrStr;

现在,我们构造了一个以CString为元素的动态数组,你可以用Add函数来添加一个函数,也可以用GetAt函数来获得一个元素。这刚好是两个几乎相反的操作,Add函数的原型是:

int Add(ARG_TYPE newElement);

我们用CString&替换ARG_TYPE之后,就可以得到如下的实现:

int Add(CString& newelement);

原来是这样啊,完全符合我们的日常习惯。再来看看GetAt函数的原型:

    TYPE GetAt(int nIndex) const;

    同样,我们替换TYPE之后,得到的是:

CString GetAt(int nIndex) const;

很简单,非常容易理解。如果你有兴趣去查看CArray的源码的话,你会发现所有的入参—也就是向CArray提供的参数,都是ARG_TPYE,而所有的由CArray返回的类型都是TYPE,那么我们现在,应该非常清楚CArray参数使用方法了,它同样适合于其他的类模板。

转载于:https://my.oschina.net/ypimgt/blog/92000

你可能感兴趣的文章
一次详细全面的***报告
查看>>
c# 三种异步编程模型EAP(*)、 APM(*)和 TPL
查看>>
deepin-安装问题:unable to find a medium containing a live file
查看>>
用 Hasor 谈一谈MVC设计模式
查看>>
IE 条件注释
查看>>
Windows热键注册(反汇编方法 查看win32api 原理)
查看>>
UNREFERENCED_PARAMETER的作用
查看>>
PHP计算表达式-栈
查看>>
IBATIS中关于iterate"$"与"#"的应用
查看>>
为什么要将对象序列化
查看>>
新增网址/网页 截图api[增加安全防护本接口已停用]源码可下载
查看>>
SpringMVC+Hibernate +MySql+ EasyUI实现POI导出Excel(二)
查看>>
刷leetcode第705题- 设计哈希集合
查看>>
dubbo协议参考
查看>>
SpringAOP拦截Controller,Service实现日志管理(自定义注解的方式)
查看>>
读《白帽子讲Web安全》之安全意识篇(一)
查看>>
GLSL三种修饰符区别与用途(uniform,attribute和varying)
查看>>
python django django-debug-toolbar 加载缓慢,不能使用。
查看>>
操作系之进程调度及算法详解
查看>>
PHPexcel实列
查看>>