在我的大学课堂上,我们正在处理继承问题,尽管我教授的代码让我感到困惑并且似乎有点不对劲。
class Circle
{
protected:
double radius;
public:
Circle(double = 1.0);
double calcval();
};
Circle::Circle(double r)
{
radius = r;
}
Run Code Online (Sandbox Code Playgroud)
在这里,她在类中创建一个默认构造函数,然后在类外部创建一个单独的用户定义构造函数。当我最初看到这一点时,我认为必须有一种方法可以更有效地做到这一点,从而占用更少的空间,使代码更具可读性。
经过一些在线搜索后,我找到了一些我尝试过的资源,尽管我仍然遇到一些错误。这是我尝试过的“Circle”类的构造函数。
class Circle
{
protected:
double radius;
public:
double calcVal();
Circle(double r = 1.0) : radius(r) {}
};
Run Code Online (Sandbox Code Playgroud)
它是否正确?我试图使默认构造函数设置 radius = 1.0 并有一个构造函数将 radius = 设置为“r”(用户输入)。
我们还有另一个派生类“Cylinder”,我尝试做类似的事情但收到错误。
这是我教授的实现。
class Cylinder : public Circle
{
protected:
double length;
double volume;
public:
Cylinder(double r, double len);
double calcval();
};
Cylinder::Cylinder(double r, double len){
length =len;
this->radius =r;
}
Run Code Online (Sandbox Code Playgroud)
然后这就是我尝试的。
class …Run Code Online (Sandbox Code Playgroud)