あまり重要な事ではありませんが,クラスの設計としては
MemberInitialize() を protected にすると良いです。
外部から任意で呼ばれると,メモリリークを起こしますから。

それから。。。派生を考えての事なのかな?
MemberInitialize を virtual にしているようですが,
"コンストラクト時に一度しか呼ばれてはならない" という性質上,
あまり意味は無いように思えます。
余分な関数テーブルを減らすためにも,
virtual にはしない方がより良くなるでしょう。