Инициализация с использованием специальных функций-членов
В этом разделе описывается инициализация с использованием специальных функций-членов. Кроме того, рассматриваются следующие аспекты инициализации.
Инициализация агрегатов — описание инициализации массивов отличных от класса типов и объектов простых типов классов. Эти простые типы классов не могут иметь закрытые или защищенные элементы либо базовые классы.
Конструкторы — описание инициализации объектов типа классов с использованием специальных функций конструктора.
По умолчанию метод инициализации заключается в побитовом копировании из инициализатора в инициализируемый объект. Эта техника применима только к следующим элементам.
Объекты встроенных типов. Например:
int i = 100;
Указатели. Например:
int i; int *pi = &i;
Ссылки. Например:
String sFileName( "FILE.DAT" ); String &rs = sFileName;
Объекты типа классов, где класс не имеет закрытых или защищенных элементов, виртуальных функций или базовых классов. Например:
// spec1_special_member_functions.cpp // compile with: /LD struct Point { int x, y; }; Point pt = { 10, 20 }; // Static storage class only
Классы могут задавать более точные параметры инициализации, определяя функции конструктора. (Дополнительные сведения об объявлении таких функций см. в разделе Конструкторы). Если объект является типом классов с конструктором, этот объект необходимо инициализировать или использовать конструктор по умолчанию. Объекты, которые не инициализированы специально, вызывают конструктор класса по умолчанию.