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