Пользовательские операторы преобразования не должны использоваться
Пользовательские операторы преобразования не должны использоваться.
Пользовательские операторы преобразования могут быть названы, когда вы не хотите и не ожидаете, что они будут названы, который может привести к неожиданным ошибкам разговора типа. Например, в этом фрагменте кода, пользовательский оператор преобразования преобразует, вводят 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 doublevar1 при помощи 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)