#include <iostream>
#include <stdexcept>
class Set {
double value;
//static data members
inline static int created = 0;
inline static int active = 0;
public:
//static member functions
static int NumberOfCreated();
static int NumberOfActive();
public:
Set();
Set(double num);
//destructor
~Set();
};
Set::Set() : value(0) {
++created;
++active;
}
Set::Set(double num) : value(num) {
created++;
active++;
}
//implementation for destructor
Set::~Set()
{
//decrement active
--active;
}
int Set::NumberOfCreated() { return created; }
int Set::NumberOfActive() { return active; }
int main() {
Set s1, s2(100);
{ Set s3(50); }
std::cout << Set::NumberOfCreated()<<std::endl; // print 3
std::cout << Set::NumberOfActive()<<std::endl; //prints 2
return 0;
}