CArray的参数如何使用,TYPE与ARG_TYPE的解释
来源:互联网 发布:口才 知乎 编辑:程序博客网 时间:2024/05/19 12:37
From: http://hi.baidu.com/idealsoft/blog/item/609a6509552753216b60fbb4.html
前一篇,我已经对大家粗浅的解释了CArray的用法,现在,再详细的给大家说说CArray的参数问题。
数组---这个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参数使用方法了,它同样适合于其他的类模板。
别走开,下面,我们将讨论CArray的效率问题。
- CArray的参数如何使用,TYPE与ARG_TYPE的解释
- CArray的参数如何使用,TYPE与ARG_TYPE的解释
- 此诊断出现在编译器生成的函数“CList<TYPE,ARG_TYPE> &CList<TYPE,ARG_TYPE>::operator =(const CList<TYPE,ARG_TYPE> &)”
- error C2079: * uses undefined class 'CArray<TYPE,ARG_TYPE>'
- CArray的使用
- CArray的使用
- CArray 的使用
- CArray的使用
- CArray,CStringArray的使用
- C++ CArray的使用
- MFC的CArray使用
- VC中的CArray的使用
- VC中的CArray的使用
- VC/MFC的CArray使用
- VC中的CArray的使用
- 如何使用CArray
- CArray如何使用
- CArray如何使用
- 有道词典里添加星际译王词库
- 创建上传JPG图片格式的MIME类型
- firefox侧栏放到右侧
- 歧途?
- 如何优化SQL Server数据库查询
- CArray的参数如何使用,TYPE与ARG_TYPE的解释
- 距某天倒计时代码
- Edraw soft
- pm考试通过了...
- 如何优化sql语句
- 界面编程总结(2)
- Oracle用户管理
- WinDbg配置和使用基础
- 用shc加密或者编译shell脚本