(a)
void foo()
{
    const Foo* fp = new Foo;
    // ...
    delete fp;
}

(b)
void foo()
{
    const Foo f;
    // ...
}

(c)
void bar(const Foo* fp)
{
    // ...
    delete fp;
}

(d)
void bar(const Foo* fp)
{
    // ...
    fp->~Foo();
}

Example 1: (a) Good code; (b) more good code; (c) good, but dubious code; (d) yet more good, dubious code.

Back to Article
Copyright © 1999, Dr. Dobb's Journal