Пользовательские операторы преобразования не должны использоваться
Пользовательские операторы преобразования не должны использоваться.
Пользовательские операторы преобразования могут быть названы, когда вы не хотите и не ожидаете, что они будут названы, который может привести к неожиданным ошибкам разговора типа. Например, в этом фрагменте кода, пользовательский оператор преобразования преобразует, вводят customType
к double
позволить смешанные выражения режима:
class customType { public: customType(int base, int exponent); //.... operator double() const; // Conversion operator, convert customType to double }; customType var1(2,5); double var2 = 0.5 * var1; //Conversion operator called, converts var1 to double
var1
при помощи cout << var1;
не задавая operator <<
для customType
объекты, компилятор использует оператор преобразования, чтобы неявно преобразовать и распечатать var1
как double
. Чтобы избежать этих неожиданных преобразований, замените оператор преобразования на эквивалентную функцию. Функция должна затем быть вызвана явным образом. Если вы не можете избегать использования операторов преобразования в своем приложении, смотрите, управляет AUTOSAR C++14 Rule A13-5-2
.
Polyspace® флаги все вызовы операторов преобразования.
Если вы ожидаете нарушение правила, но не видите его, относитесь, чтобы Диагностировать, Почему Кодирующие Стандартные Нарушения Не Появляются как ожидалось.
Группа: Перегрузка |
Категория: консультация, автоматизированная |
Check AUTOSAR C++ 14 (-autosar-cpp14)
| AUTOSAR C++14 Rule A13-5-2