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