c++ - 派生类是否可以具有不在 C++ 中的基类中的构造函数?

标签 c++ class oop inheritance

假设我有一个基类:

class Animal
{
public:
    Animal(double length, double height); 
    virtual ~Animal(); 

private:
    fLength;
    fHeight;
};

构造函数设置fLength = lengthfHeight = height

我有一个派生类 Fish,它工作正常。

但是假设我有一个派生类 Cat,它有另一个属性 fLegs 需要在构造函数中设置。鱼没有腿,因此 Animal 基类具有属性 fLegs 没有意义。

可以像这样创建 Cat 的构造函数:

猫(双倍长度,双倍高度,双腿) ?

我已经试过了,但出现了一个错误,提示没有匹配的 Animal 函数调用。

有什么方法可以解决这个问题,而无需让 Fish 具有 fLegs 属性并将 Fish 的属性设置为 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;
}

关于c++ - 派生类是否可以具有不在 C++ 中的基类中的构造函数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47610312/

相关文章:

c++ - 静态、堆栈和堆内存分配中的地址排序?

c++ - 我如何在 Qt 5 中实际使用 OpenGL?

c++ - 将许多值映射到 boost::unordered_map 中的单个键?

c++ - 类成员的静态函数访问

javascript - 基于原型(prototype)的 OO 与基于类的 OO 相比有哪些优势?

c++ - 如何将多维指针数组传递给函数?

c++ - 如何检查文件是否有足够的变量?

matlab - Matlab 中自定义类方法的 Tab 补全

ruby 循环。散列成字符串

c# - ASP.NET 中的面向对象编程