その例の場合に限っていうと、
IsExistをやった直後に別プロセスからファイルを削除されちゃったり権限が更新されちゃったりして
CFileコンストラクタで失敗しちゃう可能性あるよね。

そういうとき例外を投げればいいとは思うんだが、ファイルのオープンの失敗みたいなありふれたことで
いちいち例外をハンドルしなきゃいかんのかと思うと、鬱になるよね。

ファイルI/Oに関して言えば
fstreamの実装みたいな柔軟性(コンストラクタでオープン、もしくは別メソッドでオープン)があれば
どっちでもいいんじゃねえの?というのが、俺様の感想。

それ以外のクラスは、やはりそれに応じてコンストラクタでやるか、別メソッドでやるか、
どっちでもできるようにするか、考えなきゃ移管よね。