|
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