john wrote:
> 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();
>
> }
Because you are calling the destructor on the object manually. That does
not delete the object, it just calls the destructor. then when the object
goes out of scope, when it is deleted the destructor is called.
--
Jim Langston
tazmaster@[EMAIL PROTECTED]


|