1 段階でのオブジェクトの構築と 2 段階でのオブジェクトの構築
ペンやブラシなど、グラフィック オブジェクトを作成するための 2 つの手法から選択できます。
1 段階での構築: コンストラクターを使用して、オブジェクトを 1 段階ですべて構築して初期化します。
2 段階での構築: オブジェクトを異なる 2 段階で構築して初期化します。 コンストラクターがオブジェクトを作成し、初期化関数がそれを初期化します。
2 段階での構築のほうが常により安全です。 1 段階での構築では、正しくない引数を指定した場合、またはメモリ割り当てが失敗した場合に、コンストラクターが例外をスローする可能性があります。 この問題は 2 段階での構築によって回避されます。ただし、障害を確認する必要はあります。 どちらの場合も、オブジェクトの破棄は同じプロセスです。
Note
これらの手法は、グラフィック オブジェクトだけではなく、あらゆるオブジェクトの作成に適用されます。
両方の構築手法の例
次の簡単な例は、ペン オブジェクトを構築する両方の方法を示しています。
// One-stage
CPen myPen1(PS_DOT, 5, RGB(0, 0, 0));
// Two-stage: first construct the pen
CPen myPen2;
// Then initialize it
if (myPen2.CreatePen(PS_DOT, 5, RGB(0, 0, 0)))
{
// Use the pen
}