template<class TYPE, class ARG_TYPE = const TYPE&>它的一个构造例子是
// declares an array of points
CArray<CPoint,CPoint> ptArray请问它构造一个CPoint类型的数组为何要 填两次CPoint啊,在我看来一个参数就够了啊,  在模板的构造参数中class ARG_TYPE = const TYPE& 代表什么意思呢? 特别是这个 TYPE& ? 它这个后面的&又有什么用呢?

解决方案 »

  1.   

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

  2.   

    &主要是出于效率方面的考虑!
      

  3.   

    class ARG_TYPE = const TYPE&  这里又整句又代表什么意思呢?  当这个参数缺省的时候会有什么结果呢?谢谢
      

  4.   

    TYPE是CArray内部存放的数据类型,ARG_TYPE是CArray成员函数的参数类型TYPE和ARG_TYPE两者类型不同可否?
      

  5.   

    如果说非得要相同的话,那还要两个参数干什么呢?何不像stl里面vector<TYPE>只要一个参数就省事。