说我有一个基类:
class Animal
{
public:
Animal(double length, double height);
virtual ~Animal();
private:
fLength;
fHeight;
};
构造函数设置fLength = length
和fHeight = height
。
我有一个派生类Fish
可以正常工作。
但是说我有一个派生类Cat
,它有另一个需要在构造函数中设置的属性fLegs
。鱼没有腿,因此动物基类具有属性fLegs
是没有意义的。
Cat的构造函数是否可以像:
一样创建 Cat(double length, double height, double Legs)
?
我试过这个,但是出现错误,说没有匹配的函数调用Animal。
有没有什么办法可以解决这个问题,而不会让Fish有fLegs属性并为Fish设置为0?
答案 0 :(得分:1)
是
示例:
class Animal
{
public:
Animal(double length, double height) : fLength(length), fHeight(height) {}
virtual ~Animal(){};
private:
double fLength;
double fHeight;
};
class Cat : public Animal
{
public:
Cat(double length, double height, double Legs) : Animal(length, height), fLegs(Legs) {}
private:
double fLegs;
};
int main(void)
{
Cat(1,2,4);
return 0;
}
答案 1 :(得分:0)
您可以使用以下代码。首先初始化基类构造函数。然后派生类变量。
class Cat : public Animal
{
public:
Cat(double length, double height, double legs) : Animal(length, height), fLength(legs)
{
}
private:
double flegs;
};