关于派生类的基类构造函数调用有关问题

关于派生类的基类构造函数调用问题
基类的protected成员有
int items,year[10];
char name [10][10];
bool sex;
//这是基类构造函数
base(char nam[],bool sx,int yer):items(0)
{
strcpy(name[items],nam);
sex[items]=sx;
year[items]=yer;
items++;
}


这个是派生类构造函数
leader(char nam[],bool sx,int yer,char dpm[],char pst[]):base(nam,sx,yer)
{
items--;
strcpy(department[items],dpm);
strcpy(post[items],pst);
items++;
}

主要问题就是我能不能不用初始化列表调用基类的构造函数?
把base(nam,sx,yer)写进leader()构造函数的程序里面这样可以吗?
但我试了把base(nam,sx,yer)写进leader的函数体里面,好像没有反应,

请问一下一般派生类调用基类的构造函数一般有哪些方法? 请高手回答一下,谢谢!

------解决方案--------------------
把base(nam,sx,yer)写进leader()构造函数的程序里面这样可以吗?
不行

leader(char nam[],bool sx,int yer,char dpm[],char pst[])
{
items--;
strcpy(department[items],dpm);
strcpy(post[items],pst);
items++;
}
如果是这样写就会调用Base::Base(); 你得定义Base::Base()

------解决方案--------------------
在进入派生类构造函数之前就会调用基类的构造函数···
如果你没有在初始化列表写基类构造函数,会自动调用基类默认构造函数
初始化基类成员。
这样,你还可以在派生类构造函数中再调用基类构造函数?
------解决方案--------------------
.如果你不在初始化列表里面调用,那么你得让基类提供一个默认的构造函数让编译器帮你调用来构造基类部分,否则你必须在初始化列表里面调用,不然 你再派生类的构造函数的函数体里面调用只是构造一个临时的基类对象。