Составители:
Рубрика:
§ 3.2. Конструкторы и деструкторы
В C++ существуют специальные функции-члены класса, которые определяют как
объекты класса создаются, инициализируются, копируются и уничтожаются. Важней-
шие из них - конструкторы и деструкторы. Им свойственны многие черты методов, но
существуют и свои особенности:
• конструкторы и деструкторы не могут описываться как функции, возвращающие
значение (даже как void);
• конструкторы и деструкторы не наследуются (механизм наследования далее будет
подробно рассмотрен). Однако из порождаемого класса можно вызывать конструк-
торы и деструкторы базового класса;
• конструкторы, подобно большинству функций языка C++ могут иметь аргументы. В
качестве параметров могут быть элементы, получающие значения по умолчанию;
• деструкторы могут быть виртуальными (далее виртуальные функции будут подробно
рассмотрены), конструкторы - нет;
• имя конструктора совпадает с именем класса. Имя деструктора - имя класса, которо-
му предшествует символ ~;
• нельзя получить адрес конструктора или деструктора;
• если они явно не описаны, то конструкторы и деструкторы автоматически создаются
компилятором. Тип доступа для создаваемых функций - public.
• транслятор автоматически вставляет вызовы конструктора и деструктора при описа-
нии и уничтожении объекта;
• конструкторы и деструкторы могут использовать операторы new и delete;
Имя
конструктора совпадает с именем класса. Конструктор вызывается при соз-
дании или копировании объектов класса. Конструкторы для глобальных переменных
вызываются до исполнения стартовой функции программы. Конструктор класса Х не
может иметь Х в качестве аргумента. В качестве параметра конструктор может иметь
ссылку на свой собственный класс. Конструктор, который не имеет параметров, называ-
ется конструктором по умолчанию.
Если класс Х имеет один или более конструктор, то любой из них может быть ис-
пользован для определения объекта х класса X. Конструктор создает объект х и инициа-
лизирует его. Деструктор выполняет обратные действия. Кроме того, конструктор ис-
пользуется когда создается локальный или временный объект класса, деструктор - когда
этот объект удаляется из памяти.
По умолчанию конструктор для класса Х есть одна функция без параметров Х::Х().
Подобно всем функциям конструкторы могут иметь значения аргументов по умолчанию.
Например, конструктор X
::X(int, int=0) может иметь один или два аргумента. В частно-
сти, конструктор по умолчанию Х
::Х() можно представлять как X::X(int=0). В этой свя-
зи возможна, например, следующая неоднозначность:
class Х
{
public:
X();
X(int i=0);
}
void main ()
{
X one(10); // допустимо, используется X
::X(int)
X two; // недопустимо. Не ясно Х
::Х() или X::X(int=0)
}
89
§ 3.2. Конструкторы и деструкторы
В C++ существуют специальные функции-члены класса, которые определяют как
объекты класса создаются, инициализируются, копируются и уничтожаются. Важней-
шие из них - конструкторы и деструкторы. Им свойственны многие черты методов, но
существуют и свои особенности:
• конструкторы и деструкторы не могут описываться как функции, возвращающие
значение (даже как void);
• конструкторы и деструкторы не наследуются (механизм наследования далее будет
подробно рассмотрен). Однако из порождаемого класса можно вызывать конструк-
торы и деструкторы базового класса;
• конструкторы, подобно большинству функций языка C++ могут иметь аргументы. В
качестве параметров могут быть элементы, получающие значения по умолчанию;
• деструкторы могут быть виртуальными (далее виртуальные функции будут подробно
рассмотрены), конструкторы - нет;
• имя конструктора совпадает с именем класса. Имя деструктора - имя класса, которо-
му предшествует символ ~;
• нельзя получить адрес конструктора или деструктора;
• если они явно не описаны, то конструкторы и деструкторы автоматически создаются
компилятором. Тип доступа для создаваемых функций - public.
• транслятор автоматически вставляет вызовы конструктора и деструктора при описа-
нии и уничтожении объекта;
• конструкторы и деструкторы могут использовать операторы new и delete;
Имя конструктора совпадает с именем класса. Конструктор вызывается при соз-
дании или копировании объектов класса. Конструкторы для глобальных переменных
вызываются до исполнения стартовой функции программы. Конструктор класса Х не
может иметь Х в качестве аргумента. В качестве параметра конструктор может иметь
ссылку на свой собственный класс. Конструктор, который не имеет параметров, называ-
ется конструктором по умолчанию.
Если класс Х имеет один или более конструктор, то любой из них может быть ис-
пользован для определения объекта х класса X. Конструктор создает объект х и инициа-
лизирует его. Деструктор выполняет обратные действия. Кроме того, конструктор ис-
пользуется когда создается локальный или временный объект класса, деструктор - когда
этот объект удаляется из памяти.
По умолчанию конструктор для класса Х есть одна функция без параметров Х::Х().
Подобно всем функциям конструкторы могут иметь значения аргументов по умолчанию.
Например, конструктор X::X(int, int=0) может иметь один или два аргумента. В частно-
сти, конструктор по умолчанию Х::Х() можно представлять как X::X(int=0). В этой свя-
зи возможна, например, следующая неоднозначность:
class Х
{
public:
X();
X(int i=0);
}
void main ()
{
X one(10); // допустимо, используется X::X(int)
X two; // недопустимо. Не ясно Х::Х() или X::X(int=0)
}
89
Страницы
- « первая
- ‹ предыдущая
- …
- 87
- 88
- 89
- 90
- 91
- …
- следующая ›
- последняя »
