一個Vector模板類,開始的時候是這樣寫的:
template <class T>
class Vector
{
public:
Vector(unsigned n=8):_size(n),_data(new T[_size]){}
//.........
protected:
T* _data;
unsigned _size;
};
結果一運行,機子就慢了,打開任務管理器,占內存超大。后來想起來初始化列表是按照成員變量的聲明順序初始化的,所以在構造函數里_data數組先被初始化,這時_size沒被初始化,即_size還是個隨機值,估計隨機的很大,呵呵,比方說_size為1234567,于是就申請了1234567的內存。。。。
于是修改如下就OK了:
template <class T>
class Vector
{
public:
Vector(unsigned n=8):_size(n),_data(new T[_size]){}
//.........
protected:
unsigned _size;//先聲明_size,先初始化它
T* _data;
};