ТОР 5 статей: Методические подходы к анализу финансового состояния предприятия Проблема периодизации русской литературы ХХ века. Краткая характеристика второй половины ХХ века Характеристика шлифовальных кругов и ее маркировка Служебные части речи. Предлог. Союз. Частицы КАТЕГОРИИ:
|
Функции преобразованияСпециальная операторная функция С++, которую надо применять так же как и обычные формы приведения типов.
Пример.
Stonewt wolf(287.4); doule host = double (wolf); или double thinker = (double) wolf;
В 2-х последовательных выражениях компилятор будет проверять имеется ли в классе специальное операторное объявление функции, обладающее следующими особенностями:
Доопределим класс Stonewt следующими специальными операторными функциями: Stonewt:: operator int () const { return int (pounds+0.5); } Stonewt:: operator double () const { return pounds;
Пример
Stonewt poppins(9,2.8);//9 стоунов, 2.8 фунта double p_wt = poppins; //правильно long gone = poppins;//компилятор выдаст сообщение о неоднозначности: poppins à int или //poppins à double. Ключевое слово explict не работает с функциями преобразования
long gone = (double)poppins;//верно long gone = (int)poppins;//верно
Для обеспечения надёжности программ лучше использовать явные преобразования. Например, operator int() можно заменить на следующий метод: int Stonewt::Stone_to_Int()
В этом случае недопустим оператор: int plb = poppins; но работает преобразование: int plb = poppins.Stone_to_Int();
Не нашли, что искали? Воспользуйтесь поиском:
|