Пользовательские операторы преобразования не должны использоваться
Пользовательские операторы преобразования не должны использоваться.
Пользовательские операторы преобразования могут вызываться, когда вы не хотите и не ожидаете их вызова, что может привести к неожиданным ошибкам диалога типа. Например, в этом фрагменте кода пользовательский оператор преобразования преобразует тип 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® помечает все вызовы операторам преобразования.
Если вы ожидаете нарушения правил, но не видите его, обратитесь к разделу «Стандартные нарушения кодирования не отображаются».
Группа: Перегрузка |
Категория: Консультационные, Автоматизированные |