Специальные функции-члены (C++)
В C++ определено несколько типов функций, которые можно объявлять только в виде членов классов — так называемые "специальные функции-члены". Эти функции влияют на создаются объекты данного класса, как они уничтожаются, копируются и конвертируются в объекты других типов. Многие из этих функций имеют еще одно важное свойство: они могут вызываться неявно (компилятором).
В этом разделе описываются следующие специальные функции-члены:
Конструкторы. Обеспечивают автоматическую инициализацию объектов.
Деструкторы. Выполняют очистку после явного или неявного удаления объектов.
Функции преобразования. Преобразовывают классы и другие объекты из одного типа в другой.
Функция operator new. Динамически выделяет область хранения.
Функция оператор delete. Высвобождает область хранения, выделенную при помощи функции operator new.
Оператор присваивания (operator=). Используется для выполнения присваивания.
Функции-члены из приведенного выше списка могут определяться пользователем для каждого класса.
Специальные функции-члены подчиняются тем же правилам доступа, что и другие функции-члены. Правила доступа описываются в разделе Управление доступом к членам. В следующей таблице описывается поведение функций-членов и дружественных функций.
Краткие сведения о поведении функций
Тип функции |
Наследуется ли функция от базового класса? |
Может ли функция быть виртуальной? |
Может ли функция возвращать значение? |
Функция-член или дружественная функция? |
Создается ли компилятором, если не создана пользователем? |
---|---|---|---|---|---|
Конструктор |
Нет |
Нет |
Нет |
Член |
Да |
Конструктор копии |
Нет |
Нет |
Нет |
Член |
Да |
Деструктор |
Нет |
Да |
Нет |
Член |
Да |
Преобразование |
Да |
Да |
Нет |
Член |
Нет |
Присваивание (operator=) |
Нет |
Да |
Да |
Член |
Да |
new |
Да |
Нет |
void* |
Статический член |
Нет |
удаление; |
Да |
Нет |
void |
Статический член |
Нет |
Другие функции-члены |
Да |
Да |
Да |
Член |
Нет |
Дружественные функции |
Нет |
Нет |
Да |
Дружественная |
Нет |