对象的一阶段和两阶段构建
由两种用于创建图形对象(例如笔和画笔)的技术可供选择:
一阶段构建:在一个阶段中构造和初始化对象 - 全都使用构造函数。
两阶段构建:在两个单独的阶段中构造和初始化对象。 由构造函数创建对象,由初始化函数来初始化该对象。
两阶段构建总是更安全。 在一阶段构建中,如果提供的参数有误或内存分配失败,构造函数可能会引发异常。 两阶段构建避免了此问题,不过你需要检查是否失败。 无论哪种情况,销毁对象的过程都相同。
注意
这些技术适用于创建任何对象,而不仅仅是图形对象。
这两种构建技术的示例
下面的简短示例演示了这两种构造笔对象的方法:
// 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
}