【问题描述】声明一个Cat类,使其至少满足以下要求:(1)拥有静态数据成员HowManyCats,记录Cat的个体数目。(2)声明静态成员函数GetHowMany(),存取HowManyCats。(3)能够以年龄作为构造函数参数,建立合理的构造函数(4)能够合理实现程序中猫数量的增减。(5)设计一个名为creating()的函数,该函数的主要功能为创建一个含有5个指向猫对象的指针数组,用于动态创建5个猫对象,猫的年龄分别为1,2,3,4,5。并显示数组创建前后情况下猫的数量。函数参数自拟。(6)能够合理创建主程序,该主程序能够在调用函数creating()前后显示猫的数量,在体会静态数据成员和静态成员函数的用法。【输入形式】该程序无输入,请仔细观察输出【输出形式】输出结果如下图;before the function,the number of the cat is:0before the Cat array is created,the number of the cat is:0after the Cat array is created,the number of the cat is:5destructing of the cat!destructing of the cat!destructing of the cat!destructing of the cat!destructing of the cat!after the function,the number of the cat is:0【样例说明】请一定使用有关类和对象的相关知识来完成。请在编制程序时,注意上述输出语句所在的位置,避免出错,无法通过编译。
时间: 2024-02-27 09:59:24 浏览: 70
```cpp
#include <iostream>
using namespace std;
class Cat {
private:
static int HowManyCats; // 静态数据成员记录猫的个体数目
int age;
public:
Cat(int a) { // 构造函数
age = a;
HowManyCats++;
}
~Cat() { // 析构函数
HowManyCats--;
cout << "destructing of the cat!" << endl;
}
static int GetHowMany() { // 静态成员函数存取HowManyCats
return HowManyCats;
}
static void creating() { // 创建含有5个指向猫对象的指针数组
Cat* p[5];
for (int i = 0; i < 5; i++) {
p[i] = new Cat(i + 1);
}
cout << "before the Cat array is created,the number of the cat is:" << HowManyCats << endl;
for (int i = 0; i < 5; i++) {
delete p[i];
}
cout << "after the Cat array is created,the number of the cat is:" << HowManyCats << endl;
}
};
int Cat::HowManyCats = 0; // 静态数据成员初始化
int main() {
cout << "before the function,the number of the cat is:" << Cat::GetHowMany() << endl;
Cat::creating();
cout << "after the function,the number of the cat is:" << Cat::GetHowMany() << endl;
return 0;
}
```
阅读全文