Hand 20b
static Class Member Example
myClass.h
#ifndef MYCLASS_H
#define MYCLASS_H
class myClass {
private:
int someData;
static int instanceCount;
public:
myClass(); // default constructor
myClass(int parm); // one parameter constructor
~myClass(); // destructor
void setData(int parm);
static int getInstanceCount();
int getDataValue();
};
#endif
myClass.cpp
#include "myClass.h"
int myClass::instanceCount = 0; // set the instance counter
// default constructor
myClass::myClass() {
someData = 0; instanceCount++;
}
// one parameter constructor
myClass::myClass(int parm) {
someData = parm; instanceCount++;
}
// destructor
myClass::~myClass() {
instanceCount--;
}
void myClass::setData(int parm) {
someData = parm;
}
int myClass::getInstanceCount() {
return instanceCount;
}
int myClass::getDataValue() {
return someData;
}
main.cpp
#include <iostream.h>
#include "myClass.h"
int main() {
myClass A, B(), C(2); // note B() doesn't create an instance
cout << "instances created = " << myClass::getInstanceCount() << endl;
// create some more instances
{
myClass X, Y, Z;
cout << "instances created = " << X.getInstanceCount() << endl;
}
cout << "instances created = " << myClass::getInstanceCount() << endl;
return 0;
}
Program Output
instances created = 2
instances created = 5
instances created = 2