#include <iostream>
class NonStaticVariable
{
public:
NonStaticVariable();
unsigned int get_count();
void decrement_count();
private:
unsigned int count;
};
class StaticVariable
{
public:
StaticVariable();
unsigned int get_count();
void decrement_count();
private:
static unsigned int count;
};
unsigned int StaticVariable::count = 0;
NonStaticVariable::NonStaticVariable()
{
this->NonStaticVariable::count = 0;
++this->NonStaticVariable::count;
}
unsigned int NonStaticVariable::get_count()
{
return this->NonStaticVariable::count;
}
void NonStaticVariable::decrement_count()
{
--this->NonStaticVariable::count;
}
StaticVariable::StaticVariable()
{
++this->StaticVariable::count;
}
unsigned int StaticVariable::get_count()
{
return this->StaticVariable::count;
}
void StaticVariable::decrement_count()
{
--this->StaticVariable::count;
}
int main(int argc, char *argv[])
{
// I will create two `NonStaticVariable` objects, but the count of each one will be just 1, and if I decrement the count of one of them, then one will have a count of 0 and the other will have a count of 1.
NonStaticVariable Var1, Var2;
std::cout << Var1.get_count() << " " << Var2.get_count() << std::endl;
Var1.decrement_count();
std::cout << Var1.get_count() << " " << Var2.get_count() << std::endl;
// I will create two `StaticVariable` objects, and since their `count` member variable is shared, the count of both will be equal to two, and if I decrement the count of one of them, then both will be equal to one.
StaticVariable Var3, Var4;
std::cout << Var3.get_count() << " " << Var4.get_count() << std::endl;
Var3.decrement_count();
std::cout << Var3.get_count() << " " << Var4.get_count() << std::endl;
return 0;
}