【问题标题】:Relation between base class constructor arguements with derived class constructor基类构造函数参数与派生类构造函数之间的关系
【发布时间】:2019-12-20 07:55:42
【问题描述】:

我无法理解这种说法:“如果基类有带参数的构造函数,那么派生类必须有构造函数并将参数传递给基类构造函数。” 如果可以的话,请使用一些程序。

【问题讨论】:

  • 这能回答你的问题吗? Inheritance in C++
  • 是否有任何术语的含义不清楚(基类、构造函数、带参数的构造函数、强制、派生类、传递参数)?如果基类具有需要参数的构造函数并且没有得到任何构造函数,您认为会发生什么?

标签: c++ inheritance constructor


【解决方案1】:

如果您有一个名为 Animal 的基类和一个名为 Dog 的派生类。您需要在 Dog 的构造函数中调用 Animal 的构造函数来初始化继承的成员变量。一个非常基本的示例如下所示:

class Animal
{
int num_legs;
public:
Animal(int legs): num_legs(legs){}
};

class Dog: public Animal
{
public:
// now we send the number of legs to the Base class
Dog(int legs): Animal(legs) {}
};

如果你依赖 Dog 的默认构造函数,在这种情况下,你最终会得到一个未初始化的腿变量。

我希望这会有所帮助。

【讨论】:

  • 我会Dog(): Animal(4) {}
  • 这可能有助于解释为什么依赖标准构造函数(没有参数的构造函数)没有帮助。这似乎很明显,但对提问者来说显然不是。即尝试编译Dog(int legs): Animal() {},显示错误并解释它。
猜你喜欢
  • 2016-07-19
  • 2018-07-21
  • 2018-07-16
  • 2021-11-11
  • 2015-08-18
  • 1970-01-01
  • 2014-11-17
  • 2020-05-02
  • 1970-01-01
相关资源
最近更新 更多