{} без знака равенства используется для инициализации переменной
{} без знака равенства используется для инициализации переменной.
Инициализация с уклоном:
classType Object{arg1, arg2, ...};Предотвращает неявное сужение преобразований, например, от double кому float.
Избегает неоднозначного синтаксиса, который приводит к проблеме большинства vexing синтаксиса.
Например, из объявления:
ResourceType aResource();
aResource является функцией, возвращающей переменную типа ResourceType или объект типа ResourceType.Дополнительные сведения см. в разделе Ambiguous declaration syntax.
Правило также запрещает использование = подписать для инициализации, поскольку = знак может создавать впечатление, что конструктор назначения или копирования вызывается, даже если это не так.
Как правило, средство проверки выполняет инициализацию объекта obj1 типа данных Type используя следующие форматы:
Type obj1 = obj2;
Type obj1(obj2);
Средство проверки допускает исключение для следующих случаев:
Инициализация переменных с типом auto использование простого назначения
Инициализация ссылочных типов с использованием простого присвоения
Объявления с глобальной областью с использованием формата Type a() где Type является типом класса с конструктором по умолчанию. Анализ интерпретирует a как функция, возвращающая тип Type.
Инициализация переменной цикла в OpenMP параллельно for петли, то есть в for операторы цикла, которые немедленно следуют #pragma omp parallel for
Проверка включена только при указании версии C++ C + 11 или более поздней. ПосмотритеC++ standard version (-cpp-version).
Если вы ожидаете нарушения правила, но не видите его, обратитесь к разделу Нарушения стандартов кодирования не отображаются.
| Группа: Деклараторы |
| Категория: Обязательно, Автоматизировано |
Ambiguous declaration syntax | Check AUTOSAR C++ 14 (-autosar-cpp14) | Improper array initialization | Non-initialized variable | Variable shadowing | Write without a further read