Главная

Популярная публикация

Научная публикация

Случайная публикация

Обратная связь

ТОР 5 статей:

Методические подходы к анализу финансового состояния предприятия

Проблема периодизации русской литературы ХХ века. Краткая характеристика второй половины ХХ века

Ценовые и неценовые факторы

Характеристика шлифовальных кругов и ее маркировка

Служебные части речи. Предлог. Союз. Частицы

КАТЕГОРИИ:






Функции преобразования




Специальная операторная функция С++, которую надо применять так же как и обычные формы приведения типов.

 

Пример.

 

Stonewt wolf(287.4);

doule host = double (wolf);

или

double thinker = (double) wolf;

 

В 2-х последовательных выражениях компилятор будет проверять имеется ли в классе специальное операторное объявление функции, обладающее следующими особенностями:

  1. быть методом класса
  2. не задавать возвращаемый тип значения (тип возвращаемого значения в этом случае совпадает с именем)
  3. не иметь аргументов (неявно аргументом является сам объект)

Доопределим класс 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()
{ return int (pounds+0.5);}

 

В этом случае недопустим оператор:

int plb = poppins;

но работает преобразование:

int plb = poppins.Stone_to_Int();

 






Не нашли, что искали? Воспользуйтесь поиском:

vikidalka.ru - 2015-2024 год. Все права принадлежат их авторам! Нарушение авторских прав | Нарушение персональных данных