//static member in classes
#include <iostream>
using namespace std;
class CDummy {
public:
static int n;
CDummy() {n++;};
~CDummy(){n--;};
};
int CDummy::n =0;
int main(){
CDummy a;
CDummy b[5];
CDummy *c = new CDummy;
cout << a.n << endl;
delete c;
cout << CDummy::n << endl;
return 0;
}
The result is 7, 6.
Can anybody explain it for me?
and I don’t understand this “CDummy b[5];”. People never use syntax like this in C, right? what is this here?
Thank you!
This declares an array of five
CDummyobjects. It ends up calling theCDummydefault constructor five times (once for each object in the array).You create seven
CDummyobjects:a, five in the arrayb, and the one pointed to byc.nthen has a value of7. Then you destroy oneCDummyobject (the one pointed to byc) andnhas a value of6. The remaining sixCDummyobjects are destroyed when they go out of scope when themainfunction returns.