17年3月25号去了广州的CVTE技术面.面试官问到如何去统计一个类的实例化对象个数,这里想了一下可以用一个static数据成员去统计,但是这里注意必须在类的外部定义和初始化每个静态成。
不过我们可以为静态成员提供const整数类型的类内初始值,这样子的话要求静态成员必须是字面值常量类型的 constexpr。
下面给出自己的实现。
#include <iostream>
using namespace std;
class Demo {
private:
static int count; // 注意在类内进行 static 数据成员的声明, 在类外定义和初始化.
public:
Demo() {
cout << "I am constructor!!" << endl;
count++;
cout << count << endl; }
~Demo() {
cout << "I am destructor!!" << endl;
count--;
cout << count << endl;
}
};
int Demo::count = 0; // 定义类 Demo 的静态成员并且初始化.
int main()
{
{
Demo * p = new Demo[5];
delete []p;
}
return 0;
}