Делегирование конструкторов в C++ позволяет одному конструктору вызывать другой конструктор внутри того же класса. 35 Это помогает избежать дублирования кода. 5
Процесс делегирования происходит следующим образом: 2
- Вызывается подходящий конструктор с определённым параметром. 2
- Список инициализаторов этого конструктора делегирует инициализацию другому конструктору. 2
- Вызывается другой конструктор. 2 В качестве первого аргумента передаётся значение параметра, а в качестве второго — литер 0. 2
- Список инициализаторов делегированного конструктора инициализирует члены класса. 2
- Выполняется тело делегированного конструктора. 2
- Контроль возвращается к исходному конструктору, который выполняет своё (пустое) тело. 2
- Наконец, контроль возвращается к вызывающему. 2
Некоторые правила делегирования конструкторов в C++:
- Делегирующий конструктор не может образовывать цикл (прямой или непрямой). 3
- Делегирующие конструкторы могут делегировать только другим конструкторам того же класса. 3
- Конструктор может делегировать только одному другому конструктору. 3
- Конструктор не должен инициализировать другие члены в своём списке инициализаторов после делегирования. 3