Напишите класс, который содержит два члена класса данных numBorn и numliving - PullRequest
0 голосов
/ 14 мая 2018

Это вопрос из моего задания, я не могу понять, что это значит, может кто-нибудь помочь мне с этим, пожалуйста?

  1. Напишите класс, который содержит два члена класса данных numBorn и numliving.Значение numBorn должно быть равно номеру объекта класса, который был создан.Значение numLiving должно быть равно общему количеству существующих в настоящее время объектов (т. Е. Объекта, который был построен, но еще не разрушен).

1 Ответ

0 голосов
/ 14 мая 2018

Вам нужно будет сделать ваши переменные статическими данными вашего классаТогда ваш конструктор (ы) и деструктор будут увеличиваться и уменьшаться по мере необходимости.

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 уменьшается от своего деструктора.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...