直接上代码吧
template<class T>
class vectorList : public linearList<T>
{
public:
vectorList(size_t initCapacity = 10);
vectorList(const vectorList<T> & rhs);
~vectorList();
......
protected:
void checkIndex(size_t theIndex);
vector<T> element;
size_t vectorLength;
size_t listSize;
}
大致就是这样,主要考虑拷贝构造函数vectorList(const vectorList<T> & rhs);该函数的定义如下:
template<class T>
vectorList<T>::vectorList(const vectorList<T>& rhs) :
element(vector<T>(rhs.vectorLength)),
vectorLength(rhs.vectorLength),
listSize(rhs.listSize)
{
copy(rhs.element.begin(), rhs.element.end(), element);
}
显然,在这个成员函数中rhs直接访问了自身的私有成员vectorLength和listSize
而如果在main.cpp里也这样调用的话就是错的