Пользовательские операторы преобразования не должны использоваться
Пользовательские операторы преобразования не должны использоваться.
Пользовательские операторы преобразования могут быть названы, когда вы не хотите и не ожидаете, что они будут названы, который может привести к неожиданным ошибкам разговора типа. Например, в этом фрагменте кода, пользовательский оператор преобразования преобразует, вводят 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® отмечает все вызовы операторов преобразования.
Если вы ожидаете нарушение правила, но не видите его, обратитесь к Кодированию Стандартных Нарушений, Не Отображенных.
Группа: Перегрузка |
Категория: консультация, автоматизированная |
AUTOSAR C++14 Rule A13-5-2
| Check AUTOSAR C++ 14 (-autosar-cpp14)