C++ 继承类和父类';s构造函数

C++ 继承类和父类';s构造函数,c++,C++,我为ellipse添加了第二个构造函数,如下所示(尝试和错误),并解决了这个问题 friendclass4.cpp: In constructor ‘circle::circle(float)’: friendclass4.cpp:24:1: error: no matching function for call to ‘ellipse::ellipse()’ friendclass4.cpp:24:1: note: candidates are: friendclass4.cpp:10:1:

我为ellipse添加了第二个构造函数,如下所示(尝试和错误),并解决了这个问题

friendclass4.cpp: In constructor ‘circle::circle(float)’:
friendclass4.cpp:24:1: error: no matching function for call to ‘ellipse::ellipse()’
friendclass4.cpp:24:1: note: candidates are:
friendclass4.cpp:10:1: note: ellipse::ellipse(float, float)
friendclass4.cpp:10:1: note:   candidate expects 2 arguments, 0 provided
friendclass4.cpp:5:7: note: ellipse::ellipse(const ellipse&)
friendclass4.cpp:5:7: note:   candidate expects 1 argument, 0 provided
但我不知道为什么在添加此之前会出现错误。
有人能给我解释一下吗

在构造函数
圆圈(float)
中,它需要调用默认构造函数
椭圆()
,不带任何参数,因为“初始化列表”中没有提供任何参数。要修复它,请执行此操作(并删除
椭圆()
默认构造函数):


这只是将
a
b
的初始化委托给两个参数
eliple
构造函数。它提供了更好的封装和更简洁的代码。

在构造函数
循环(float)
中,它需要调用默认构造函数
eliple()
,不带任何参数,因为您在“初始化列表”中没有提供任何参数。要修复它,请执行此操作(并删除您的
eliple()
默认构造函数):


这只是将
a
b
的初始化委托给两个参数
eliple
构造函数。它提供了更好的封装和更简洁的代码。

在构造函数
循环(float)
中,它需要调用默认构造函数
eliple()
,不带任何参数,因为您在“初始化列表”中没有提供任何参数。要修复它,请执行此操作(并删除您的
eliple()
默认构造函数):


这只是将
a
b
的初始化委托给两个参数
eliple
构造函数。它提供了更好的封装和更简洁的代码。

在构造函数
循环(float)
中,它需要调用默认构造函数
eliple()
,不带任何参数,因为您在“初始化列表”中没有提供任何参数。要修复它,请执行此操作(并删除您的
eliple()
默认构造函数):



这只是将
a
b
的初始化委托给两个参数
eliple
构造函数。它提供了更好的封装和更简洁的代码。

修复您的格式设置。您听说过圆形椭圆问题吗?修正你的格式。你听说过圆形椭圆的问题吗?修正你的格式。你听说过圆形椭圆的问题吗?修正你的格式。你听说过圆形椭圆的问题吗?我这样说对吗:虽然父类的构造函数不是继承的,但在实例化子类时会调用它。确实,构造函数不是完全继承的:基类中有一个构造函数使用两个
float
s并不意味着派生类中有一个构造函数。但是派生类可以调用任何公共或受保护的基类构造函数,并且在创建派生实例时,它必须调用一个基类构造函数。默认情况下,它将调用基类的“默认构造函数”,即不带参数的构造函数。但是你可以调用任何基类构造函数,包括外部世界无法使用的受保护的构造函数。感谢您的时间和回答:)我这样说对吗:虽然父类的构造函数没有被继承,但在实例化子类时会调用它。构造函数确实没有被完全继承:构造函数的存在需要两个基类中的
float
s并不意味着派生类中存在一个。但是派生类可以调用任何公共或受保护的基类构造函数,并且在创建派生实例时,它必须调用一个基类构造函数。默认情况下,它将调用基类的“默认构造函数”,即不带参数的构造函数。但是你可以调用任何基类构造函数,包括外部世界无法使用的受保护的构造函数。感谢您的时间和回答:)我这样说对吗:虽然父类的构造函数没有被继承,但在实例化子类时会调用它。构造函数确实没有被完全继承:构造函数的存在需要两个基类中的
float
s并不意味着派生类中存在一个。但是派生类可以调用任何公共或受保护的基类构造函数,并且在创建派生实例时,它必须调用一个基类构造函数。默认情况下,它将调用基类的“默认构造函数”,即不带参数的构造函数。但是你可以调用任何基类构造函数,包括外部世界无法使用的受保护的构造函数。感谢您的时间和回答:)我这样说对吗:虽然父类的构造函数没有被继承,但在实例化子类时会调用它。构造函数确实没有被完全继承:构造函数的存在需要两个基类中的
float
s并不意味着派生类中存在一个。但是派生类可以调用任何公共或受保护的基类构造函数,并且在创建派生实例时,它必须调用一个基类构造函数。默认情况下,它将调用基类的“默认构造函数”,即不带参数的构造函数。但是您可以调用任何基类构造函数,包括外部世界无法使用的受保护的构造函数。谢谢您的时间和回答:)
friendclass4.cpp: In constructor ‘circle::circle(float)’:
friendclass4.cpp:24:1: error: no matching function for call to ‘ellipse::ellipse()’
friendclass4.cpp:24:1: note: candidates are:
friendclass4.cpp:10:1: note: ellipse::ellipse(float, float)
friendclass4.cpp:10:1: note:   candidate expects 2 arguments, 0 provided
friendclass4.cpp:5:7: note: ellipse::ellipse(const ellipse&)
friendclass4.cpp:5:7: note:   candidate expects 1 argument, 0 provided
ellipse() {

}
circle(float r)
  : ellipse(r, r)
{
}