题目描述
【问题描述】声明一个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:0
before the Cat array is created,the number of the cat is:0
after the Cat array is created,the number of the cat is:5
destructing 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
解题思路
根据题意分别在类中定义静态变量和默认变量即可,含构造函数以及析构函数的使用
源代码
#include <iostream>
#include <bits/stdc++.h>
using namespace std;
class Cat {
int age;
static int HowManyCats;
public:
Cat(int a = 0) : age(a) {
HowManyCats++;
}
~Cat() {
HowManyCats--;
cout << "destructing of the cat!" << endl;
}
static int GetHowMany() {
return HowManyCats;
}
};
int Cat::HowManyCats = 0;
void creating() {
cout << "before the Cat array is created,the number of the cat is:" << Cat::GetHowMany() << endl;
Cat* pts[5];
for (int i = 0; i < 5; i++) {
pts[i] = new Cat(i + 1);
}
cout << "after the Cat array is created,the number of the cat is:" << Cat::GetHowMany() << endl;
for (int i = 0; i < 5; i++) {
delete pts[i];
}
}
int main() {
cout << "before the function,the number of the cat is:" << Cat::GetHowMany() << endl;
creating();
cout << "after the function,the number of the cat is:" << Cat::GetHowMany() << endl;
return 0;
}
总结
这里注意在main函数外的函数里面定义类,以及静态变量的使用