Как NSDMI, так и нестатический инициализатор элемента в конструкторе не должны использоваться в одном типе
Как NSDMI, так и нестатический инициализатор элемента в конструкторе не должны использоваться в одном типе.
Можно инициализировать нестатический элемент данных класса одним из следующих способов:
В объявлении элемента в теле класса с помощью инициализатора нестатического элемента данных (NSDMI)
С помощью инициализатора нестатического элемента в конструкторе
В классе инициализация подмножества нестатических элементов данных с помощью NSDMI и инициализация остальных нестатических элементов данных с помощью конструктора снижает читаемость кода. Этот шаблон кода может привести к путанице для читателя относительно того, какие начальные значения для каждого элемента данных действительно используются. Использование NSDMI или конструктора для инициализации всех нестатических элементов данных класса позволяет избежать этой потенциальной путаницы.
Конструкторы перемещения и копирования исключаются из этого правила, поскольку эти конструкторы имеют особое поведение инициализации элементов данных с использованием их существующих значений из других объектов. Эти конструкторы вряд ли вызовут путаницу у читателя.
При использовании NSDMI для инициализации подмножества нестатических элементов данных класса и конструктора для инициализации оставшихся нестатических элементов данных средство проверки помечает конструктор и связанные с ним инициализации NSDMI.
Средство проверки не помечает конструкторы перемещения и копирования, нарушающие это правило.
Если вы ожидаете нарушения правила, но не видите его, обратитесь к разделу Нарушения стандартов кодирования не отображаются.
| Группа: Специальные функции-члены |
| Категория: Обязательно, Автоматизировано |