ex5-3.cpp - Example 5-3 Static Data member

// File: ex5-3.cpp - static data member

#include <iostream>
using namespace std;

// function prototype
void funk(void);

class Circle
{
private:
	double radius_;
	static unsigned numCircles_;
public:
	Circle (double r) { radius_ = r; numCircles_++;}
	Circle (const Circle& r) {radius_ = r.radius_; numCircles_++;}
	Circle (void) {radius_ = 1.; numCircles_++;}
	~Circle (void) {numCircles_--;}
	void printCircleCount();
};

unsigned Circle::numCircles_ = 0;     // static member definition

void Circle::printCircleCount(void)
{
	cout << "Number of Circles = " << numCircles_ << endl;
}


int main(void)
{
	Circle c1(5.);
	c1.printCircleCount();
	Circle c2;
	c2.printCircleCount();
	c1.printCircleCount();
	{
		Circle c3(1.5);
		c3.printCircleCount();
	}
	c1.printCircleCount();
	Circle c4(c1);
	c1.printCircleCount();

	funk();
	c1.printCircleCount();
	return 0;
}

void funk(void)
{
	Circle tempLocal;
	tempLocal.printCircleCount();
}



CIS27: Programming in C++    Instructor: Joe Bentley