Вам нужно будет сделать ваши переменные статическими данными вашего классаТогда ваш конструктор (ы) и деструктор будут увеличиваться и уменьшаться по мере необходимости.
class A
{
public:
static std::size_t numBorn;
static std::size_t numLiving;
A()
{
++numBorn;
++numLiving;
}
~A()
{
--numLiving;
}
};
std::size_t A::numBorn = 0;
std::size_t A::numLiving = 0;
В виде небольшого демо
int main()
{
A a1;
A a2;
{
A a3;
std::cout << "living: " << A::numLiving << " born: " << A::numBorn << '\n';
}
std::cout << "living: " << A::numLiving << " born: " << A::numBorn << '\n';
}
будет выводиться
living: 3 born: 3
living: 2 born: 3
Обратите внимание, что когда a3
выпадает из области видимости, numLiving
уменьшается от своего деструктора.