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