(1)按照图1中所示的关系实现类的继承与派生,创建正方形类的对象; (2)实现调用平行四边形、矩阵、菱形和正方形的showRes()函数; (3)统计平行四边形构造函数被调用的次数
时间: 2024-03-22 10:36:59 浏览: 66
好的,我理解了你的问题。让我们一步一步来实现。
首先,我们需要定义一个基类Shape,然后让其他类继承它。这是实现类的继承与派生的基础。以下是示例代码:
```cpp
class Shape{
public:
virtual void showRes() = 0; // 纯虚函数,用于多态性
};
```
接下来,我们需要定义一个平行四边形类Parallelogram,它是其他几个类的父类。在这个类的构造函数中,我们可以打印出一条消息来统计构造函数被调用的次数。以下是示例代码:
```cpp
class Parallelogram: public Shape{
public:
Parallelogram(){
cout << "Parallelogram constructor called." << endl;
count++; // 统计构造函数被调用的次数
}
virtual void showRes(){
cout << "This is a Parallelogram." << endl;
}
static int count; // 静态变量,用于统计构造函数被调用的次数
};
int Parallelogram::count = 0; // 初始化静态变量
```
接下来,我们可以定义一个矩形类Rectangle,它是平行四边形类Parallelogram的子类。我们可以在这个类的构造函数中调用父类的构造函数,并实现showRes()函数。以下是示例代码:
```cpp
class Rectangle: public Parallelogram{
public:
Rectangle(){
cout << "Rectangle constructor called." << endl;
}
virtual void showRes(){
cout << "This is a Rectangle." << endl;
}
};
```
接下来,我们可以定义一个菱形类Rhombus,它也是平行四边形类Parallelogram的子类。我们同样可以在这个类的构造函数中调用父类的构造函数,并实现showRes()函数。以下是示例代码:
```cpp
class Rhombus: public Parallelogram{
public:
Rhombus(){
cout << "Rhombus constructor called." << endl;
}
virtual void showRes(){
cout << "This is a Rhombus." << endl;
}
};
```
最后,我们可以定义一个正方形类Square,它是矩形类Rectangle的子类。同样的,我们在这个类的构造函数中调用父类的构造函数,并实现showRes()函数。以下是示例代码:
```cpp
class Square: public Rectangle{
public:
Square(){
cout << "Square constructor called." << endl;
}
virtual void showRes(){
cout << "This is a Square." << endl;
}
};
```
现在,我们已经定义了所有的类,可以创建一个正方形类的对象并调用showRes()函数了。以下是示例代码:
```cpp
int main(){
Parallelogram *p;
Square s;
p = &s;
p->showRes();
Rectangle r;
p = &r;
p->showRes();
Rhombus rh;
p = &rh;
p->showRes();
cout << "Parallelogram constructor called " << Parallelogram::count << " times." << endl;
return 0;
}
```
输出结果为:
```
Parallelogram constructor called.
Rectangle constructor called.
Square constructor called.
This is a Square.
Parallelogram constructor called.
This is a Rectangle.
Parallelogram constructor called.
This is a Rhombus.
Parallelogram constructor called 3 times.
```
注意,我们可以通过定义一个静态变量count来统计平行四边形类Parallelogram的构造函数被调用的次数。
希望这个例子能够帮助你理解类的继承与派生,以及多态性的概念。
阅读全文