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