Одноэтапное и двухэтапное сборка объектовOne-Stage and Two-Stage Construction of Objects
Вы можете выбрать один из двух способов создания графических объектов, таких как перья и кисти:You have a choice between two techniques for creating graphic objects, such as pens and brushes:
Одноэтапная конструкция: создание и инициализация объекта на одном этапе с помощью конструктора.One-stage construction: Construct and initialize the object in one stage, all with the constructor.
Конструкция с двумя этапами: создание и инициализация объекта на двух отдельных этапах.Two-stage construction: Construct and initialize the object in two separate stages. Конструктор создает объект, и инициализирует его функцию инициализации.The constructor creates the object and an initialization function initializes it.
2-этапное построение всегда является более безопасным.Two-stage construction is always safer. В одноэтапном построении конструктор может вызвать исключение, если вы предпредоставите неверные аргументы или не удастся выделить память.In one-stage construction, the constructor could throw an exception if you provide incorrect arguments or memory allocation fails. Эта проблема не устранена конструкцией с двумя этапами, хотя необходимо проверить наличие сбоев.That problem is avoided by two-stage construction, although you do have to check for failure. В любом случае уничтожение объекта будет таким же процессом.In either case, destroying the object is the same process.
Примечание
Эти методы применяются для создания любых объектов, а не только для графических объектов.These techniques apply to creating any objects, not just graphic objects.
Пример обоих методов созданияExample of Both Construction Techniques
В следующем кратком примере показаны оба метода создания объекта Pen:The following brief example shows both methods of constructing a pen object:
// 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
}