>>892
bはだめ。bは何も指していないのに非静的メンバを使っている。
昔、静的メンバ関数がなかったときに静的メンバもどきを実現するテクニックとして使われたもので今はアウト。
ただfoo::bar()が非静的メンバ変数を全く使わなければ問題なく実行できることが多いけどな。

aのようにただのローカル変数だとブロックを抜けるまで有効。
それでは困るときにnewを使う。newでオブジェクトを用意するとdeleteを行うまで有効。