Деструктор должен сделать обратное тому, что делают конструкторы для статических членов?

class A
{
int id;
static int count;
public:
A()
{
count++;
id = count;
cout << "constructor called " << id << endl;
}
~A()
{
//count -=2; /*Keypoint is here. */
/*Uncomment it later. But result doesn't change*/
cout << "destructor called " << id << endl;
}
};

int A::count = 0;

int main()
{
A a[2];
return 0;
}

Выход

constructor called 1
constructor called 2
destructor called 2
destructor called 1

Вопрос в том:
даже если вы раскомментируете //count -=2;
результат все тот же.

Означает ли это, что если конструктор увеличивает статический член на 1, то деструктор также должен уменьшить его ровно на 1, и вы не сможете изменить его поведение?

0

Решение

Ничего не доступ count после того, как первый деструктор вызван. Деструктор делает именно то, что вы написали, либо изменяя count или нет. Но вы не увидите эффекта, если не получите доступ count каким-то образом.

2

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]