一个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;
};