Главная » C++ энциклопедия » П » Порядок вызова конструкторов
Категория: C++ энциклопедия » П
  • 0

13 дек 2011

Автор: admin

Если класс не содержит собственных конструкторов, он инициализируется так, словно компилятор создал конструктор без аргументов за вас. Этот конструктор вызывает конструкторы без аргументов базовых классов и переменных класса. Четко определенный порядок вызова конструкторов не зависит
от того, используются конструкторы стандартные или перегруженные, с аргументами или без:

  1. Сначала вызываются конструкторы базовых классов в порядке их перечисления в списке
    наследования (еще один список, в котором после символа : перечисляются базовые классы,
    разделенные запятыми).
  2. Затем вызываются конструкторы переменных класса в порядке их объявления в объявлении
    класса.
  3. После того как будут сконструированы все базовые классы и переменные, выполняется тело
    вашего конструктора.


Описанный порядок применяется рекурсивно, то есть первым конструируется первый базовый класс первого базового класса... и т. д. Он не зависит от порядка, указанного в списке инициализации членов.
Если бы дело обстояло иначе, для разных перегруженных конструкторов мог бы использоваться
разный порядок конструирования. Тогда компилятору было бы трудно гарантировать, что деструкторы
будут вызываться в порядке, обратном порядку вызова конструкторов.
Уважаемый посетитель, Вы зашли на сайт как незарегистрированный пользователь.
Мы рекомендуем Вам зарегистрироваться либо войти на сайт под своим именем.
Информация
Посетители, находящиеся в группе Гости, не могут оставлять комментарии к данной публикации.