Общая инициализация класса для непостоянных членов должна быть сделана конструктором делегирования
Общая инициализация класса для непостоянных членов должна быть сделана конструктором делегирования.
Классы C++ часто имеют несколько конструкторов с различными синтаксисами. У этих инициализаторов могут иметь некоторые общие инициализации. Например, в этом коде, обоих конструкторах класса Circle инициализируйте непостоянные члены xY и r.
class Circle{
int x;
int y;
int r;
public:
Circle(int x_in, int y_in, int r_in): x{x_in}, y{y_in},r{r_in}{
//...
}
Circle( int x_in, int y_in): x{x_in}, y{y_in}, r{0}{
//...
}
//...
};Чтобы избежать неожиданных результатов, делегируйте инициализацию непостоянных членов существующим конструкторам, когда это возможно. Постарайтесь не повторять инициализации в нескольких конструкторах.
Polyspace® отмечает класс, объединение или структуру, если какой-либо из их непостоянных членов инициализируется в нескольких конструкторах. Polyspace не отмечает:
Скопируйте или переместите конструкторов, которые не используют конструкторов делегата.
Массивы, которые инициализируются в нескольких конструкторах.
Объекты, которые являются инициализированным полем полем в нескольких конструкторах.
Если вы ожидаете нарушение правила, но не видите его, относитесь, чтобы Диагностировать, Почему Кодирующие Стандартные Нарушения Не Появляются как ожидалось.
| Группа: Специальные функции членства |
| Категория: Необходимый, Частично автоматизированный |