初始化列表与非初始化列表有什么区别吗?该怎么解决

初始化列表与非初始化列表有什么区别吗?
class   Widget
{
public:
Widget();
~Widget();

private:
LongArray*   pLongArray;
}

//这两个构造函数有什么区别吗?
Widget::Widget():pLongArray(new   LongArray)//构造函数1
{
}
/*
Widget::Widget()//构造函数2
{
pLongArray   =   new   LongArray;
}
*/
Widget::~Widget()
{
delete   pLongArray;
}

//请问那两个构造函数有什么区别吗?

------解决方案--------------------
C++Primer上有说明。
------解决方案--------------------
如果不用初始化列表就会出错

class base{
int a; //2
public:
base(int i){a=i;}
};
class derived : public base {
base aa,bb;
public:
derived(int i,int j,int k);
};

解答:derived::derived(int i,int j,int k):aa(i),bb(j),base(k)
{
}

------解决方案--------------------
//这两个构造函数有什么区别吗?
Widget::Widget():pLongArray(new LongArray)//构造函数1
{
}
/*
Widget::Widget()//构造函数2
{
pLongArray = new LongArray;
}
*/
=====================================================
这两个不存在什么区别,指针类型里外的都可以
------解决方案--------------------
用列表会快一些,因为省了一次构造时间。
但对于指针来说应该是一样的。