派生类可以具有C 基类不在基类中的构造函数吗?

Can a derived class have a constructor that is not in the base class in C++?

本文关键字:基类 构造函数 派生      更新时间:2023-10-16

说我有一个基类:

class Animal
{
public:
    Animal(double length, double height); 
    virtual ~Animal(); 
private:
    fLength;
    fHeight;
};

构造函数集fLength = lengthfHeight = height

我有一个派生的Fish类,可以正常工作。

,但说我有一个派生的Cat类,该类有另一个属性fLegs,需要在构造函数中设置。鱼没有腿,因此动物基类拥有 fLegs是没有意义的。

可以像以下方式创建猫的构造函数:

Cat(double length, double height, double Legs)

我尝试了这个错误,但是出现错误,说没有对动物的匹配功能。

有什么办法可以解决这个问题,而无需使鱼具有fly属性并将其设置为0?

是。

示例:

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;
}

您可以使用以下代码。首先初始化基类构造函数。然后派生的类变量。

class Cat : public Animal
{
public:
    Cat(double length, double height, double legs) : Animal(length, height), fLength(legs)
    {
    } 
private:
   double flegs;
};