我已经看过以前CArray的帖子了。但是我还是有一点不懂:
template< class TYPE, class ARG_TYPE > class CArray : public CObject
例如:CArray<CPoint,CPoint> ptArray; 和 CArray<CPoint,&CPoint> ptArray;
当ARG_TYPE为Point和&Point时,CArray都可以工作正常,所以我就随便使用了。但是还是有些不放心,想请问:在调用什么函数时,Point和&Point会有差别。
template< class TYPE, class ARG_TYPE > class CArray : public CObject
例如:CArray<CPoint,CPoint> ptArray; 和 CArray<CPoint,&CPoint> ptArray;
当ARG_TYPE为Point和&Point时,CArray都可以工作正常,所以我就随便使用了。但是还是有些不放心,想请问:在调用什么函数时,Point和&Point会有差别。
解决方案 »
- 我程序有多个chtmlview,可以为不同的chtmlview设置不同代理服务器吗?
- CListCtrl中某一列的图标怎么居中显示?
- 一个困扰我好久的com问题,牛人请看过来!多谢!
- 关于 ole 文档的问题, 看了mfc , 还是不懂
- 图像分割的问题,望高手请教!
- 请问怎样能让CCombobox记住用户的输入?
- 我要把MAINFRAME中打开的数据库变量传递到弹出对话框中,
- 惨了!
- 如何用封包技术来做一个魔兽世界客服端
- 我用VC++MFC的对话框创建了一个工具条,但是工具条不可以移动,在菜单下,怎样才能让它可以移动而且不在菜单下?
- 求教:关于VC6下的WebServices的应用
- SDI切换窗口问题
应该用CArray<CPoint,CPoint&>,这样取值的时候传回的就是引用,不用拷贝了。
CPoint p(20, 30);
arrPoint.Add(p);
是否只是在CPoint构造函数时存在对CPoing是引用还是拷贝的差别而已吗?那么CPoint和CPoint&二者都可以了。
用起来真的是一样的吗?比如在调用ElementAt()和GetAt()和[]时存在差别吗?
但是CArray<CPoint, CPoint> arrPoint;也可以啊,只要重载=就可以了。
比方说CArray::Add( ARG_TYPE newElement )成员,虽然ARG_TYPE是CPoint和CPoint&都可以用,但引用避免了值传递产生的数据拷贝,这对于大类型数据对象是很有利的,而CPoint是值传递,需要数据拷贝,对大型数据对象不利