Поделиться через


Инициализация с использованием специальных функций-членов

В этом разделе описывается инициализация с использованием специальных функций-членов. Кроме того, рассматриваются следующие аспекты инициализации.

  • Инициализация агрегатов — описание инициализации массивов отличных от класса типов и объектов простых типов классов. Эти простые типы классов не могут иметь закрытые или защищенные элементы либо базовые классы.

  • Конструкторы — описание инициализации объектов типа классов с использованием специальных функций конструктора.

По умолчанию метод инициализации заключается в побитовом копировании из инициализатора в инициализируемый объект. Эта техника применима только к следующим элементам.

  • Объекты встроенных типов. Например:

    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
    

Классы могут задавать более точные параметры инициализации, определяя функции конструктора. (Дополнительные сведения об объявлении таких функций см. в разделе Конструкторы). Если объект является типом классов с конструктором, этот объект необходимо инициализировать или использовать конструктор по умолчанию. Объекты, которые не инициализированы специально, вызывают конструктор класса по умолчанию.

См. также

Ссылки

Специальные функции-члены (C++)