在c++中,经常会用到一些类的构造函数,比如一个简单动物类的构造函数:
//无参构造方法
animals()
{
name = "未记录";
type = "野生动物";
}
//有参构造方法
animals(string type,string name)
{
this->type = type;
this->name = name;
}
众所周知,单继承的构造函数为在现有构造函数中加上“:父类”,:
//有参构造
meat(string food,string type,string name):animals(type,name)
{
this->food = food;
}
但当遇到多继承时,往往因为上层已经继承了父类,而考虑到最下层类要引用父类忘记再引用祖父类,从而导致不能够进行祖父类构造方法的调用如:
sheep(string color,string plant,string type,string name):straw(plant,type,name)
{
this->color = color;
s_count++;
}
正确的创建构造函数应为:
sheep(string color,string plant,string type,string name):straw(plant,type,name), animals(type,name)
{
this->color = color;
s_count++;
}
只有这样才能正确调用父类和祖父类的构造函数