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