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