CArray(type, type)和CArray(type, type&)有何区别??顺便说一下含意吧。那到底还有没有CArray(type&, type)和CArray(type1, type2)[其中type1和type2是不同的类型,比如CArray(int, double)那到底是什么含意?]......

解决方案 »

  1.   

    这两种定义方式都可以,前一种定义方式在操作保存在数组中的对象时,其参数用的也是对象,后一种用的是引用;不同类型的定义是可以的,不过你得在数据组类型type1中定义相应的操作,否则,没有意义。推存使用相同类型
      

  2.   

    CArray(type, type)和CArray(type, type&)能再说得明白一点吗,举一个例子好吗
      

  3.   

    CArray<int,int&>m_array
    说明m_array类型是int
    m_array里面的数据是int&, 是int的引用类型CArray<int,int>里m_array
    m_array里面的数据是int型,在上面的例子中看不出引用的好处,但是如果是:
    class Picture
    {
    ....
    }
    CArray<Picture,Picture&>m_array就有它的好处了
    因为引用用的是类的别名,当把数据保存到数组链表时用的是数据的副本
    很安全,实用!
    如果用的是CArray<Picture,Picture>时,每保存一个Picture类时,都调用其拷贝构造函数,那就麻烦了,具体的可以找找书看看,所以都使用引用类型,主要是为了安全!
      

  4.   

    好的。那么有没有可能有CArray<Picture&, Picture&>的,若有,什么意思
      

  5.   

    CArray定义:
    template < class TYPE, class ARG_TYPE = const TYPE& >
    class CArray :  public CObject
    注意看SetAt
    void SetAt(INT_PTR nIndex,ARG_TYPE newElement);
    用的是ARG_TYPE,这样的话,如果你的ARG_TYPE不是引用就会像9headsnake(楚海云) 所说的,拷贝一次,较低了执行效率,强烈推荐使用stl