我已经看过以前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会有差别。
  

解决方案 »

  1.   

    CArray<CPoint,&CPoint>?CArray<CPoint,CPoint&>!
    应该用CArray<CPoint,CPoint&>,这样取值的时候传回的就是引用,不用拷贝了。
      

  2.   

    用起来是一样的.还用这样定义的CArray<CPoint*,CPoint*> ptArray
      

  3.   

    一般用CArray<CPoint, CPoint&> arrPoint;
    CPoint p(20, 30);
    arrPoint.Add(p);
      

  4.   

    &CPoint应该是CPoint&,写错了。
    是否只是在CPoint构造函数时存在对CPoing是引用还是拷贝的差别而已吗?那么CPoint和CPoint&二者都可以了。
    用起来真的是一样的吗?比如在调用ElementAt()和GetAt()和[]时存在差别吗?
      

  5.   

    memory_xj(青蛙) 你说一般都用CArray<CPoint, CPoint&> arrPoint;
    但是CArray<CPoint, CPoint> arrPoint;也可以啊,只要重载=就可以了。
      

  6.   

    template< class TYPE, class ARG_TYPE > class CArray : public CObjectTYPE是CArray内部存放的数据类型,ARG_TYPE是CArray成员函数的参数类型
    比方说CArray::Add( ARG_TYPE newElement )成员,虽然ARG_TYPE是CPoint和CPoint&都可以用,但引用避免了值传递产生的数据拷贝,这对于大类型数据对象是很有利的,而CPoint是值传递,需要数据拷贝,对大型数据对象不利
      

  7.   

    谢谢大家。我明白了。babytool你的解释很好。