a = b = new c creates (allocates) one object of type c, then assigns the pointer to b, and then assigns the same pointer to a.
Careful, that isn't actually true.
a will point to b, while b will point to c. The fact that b currently points to c wont hold true if b is reassigned.
... I think I said that poorly.
EDIT: ------------------------------------------------------ IGNORE EVERYTHING I SAY IN THIS THREAD!!!! -----------------------------------------------------------------
EDIT: Seriously... do it. Took a double dose of stupid pills this afternoon. I'd edit out my comments for the sake of confusion, but thats makes things worse.