首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

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

2012-02-05 
初始化列表与非初始化列表有什么区别吗?classWidget{public:Widget()~Widget()private:LongArray*pLongA

初始化列表与非初始化列表有什么区别吗?
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;
}
*/
=====================================================
这两个不存在什么区别,指针类型里外的都可以
[解决办法]
用列表会快一些,因为省了一次构造时间。
但对于指针来说应该是一样的。

热点排行