On Mar 26, 3:13 pm, "Jim Langston" <tazmas...@[EMAIL PROTECTED]
> wrote:
> 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
> tazmas...@[EMAIL PROTECTED]
your for answering my dumb question. :)


|