类继承--构造函数

看如下代码:  

 1 class BASEs
2 {
3 public:
4 BASE(int index):_index(index)
5 {
6 }
7 ~BASE(void)
8 {
9 }
10 private:
11 int _index;
12 };

这是一个没有默认构造函数的类。

class CHILD:public BASE
{
public:
CHILD( ):BASE(0)//这里是关键。
{
}
~CHILD(void)
{
}
};


当构造派生类的时候,首先要构造父类,也就是说要先调用父类的构造函数,因为父类BASE中并没有默认的构造函数,且,定义了一个带参的构造函数,编译器在编译的时候不会添加默认的构造参数,那么当你在设计派生类的时候,必须去显示的构造一下父类。如果把 :BASE(0) 去掉,那么编译的时候编译器会先去找 BASE 的默认构造参数,因为没有,只有个带参的,又没有传值给它,所以将编译报错。

posted @ 2012-01-13 12:58  rookie_zw  阅读(145)  评论(0)    收藏  举报