I have not been able to figure out why this ends up with a negative
object count (the class
counts how many objects there are). I am sure this is obvious to
everyone else. Could someone please
point out why the count is not correct. Sorry to ask such a dumb
question.
It gives the output:
Constructor called, so we have 1 TestClass objects.
Destructor called so we will have 0 TestClass objects.
Destructor called so we will have -1 TestClass objects.
Here is the code:
#include<iostream>
class TestClass {
public:
static int activeObjects; // How many of this type of
object were constructed
TestClass() { // default constructor
activeObjects ++;
std::cout << "Constructor called, so we have "
<< activeObjects << " TestClass objects.\n";
}
TestClass( const TestClass & rhs ) { // copy
constructor
activeObjects ++;
std::cout << "Copy constructor called, so we
have " << activeObjects << " TestClass objects.\n";
}
~TestClass() { // destructor
activeObjects--;
std::cout << "Destructor called so we will have
" << activeObjects << " TestClass objects.\n";
}
};
int TestClass::activeObjects = 0;
int main() {
TestClass object = TestClass();
object.~TestClass();
}