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