Объектно-ориентированное программирование на C++. Андрианова А.А - 87 стр.

UptoLike

Объектно-ориентированное программирование на С++
Возвращаемым значением этих функций также должна быть ссылка на
соответствующий поток. Это необходимо в случае, если ввод/вывод
осуществляется в один поток частями. Например,
. . .
Matrix a(2,2), b(2,2), c(2,2);
cin >> a >> b >> c;
. . .
cout << a << b << c;
. . .
Перегрузка операций преобразования типов.
Класс может содержать методы для осуществления операции
преобразования в другие типы данных или из них. Они реализуются:
с помощью конструкторов, когда преобразование происходит
к типу класса;
с помощью специальных операторов, когда объект класса
преобразуется к другим типам данных.
Оператор преобразования к типу данных имеет вид:
operator имя_типа(); // имя_типа – имя оператора
Этот оператор не имеет возвращаемого типа, поскольку он совпадает
с именем оператора. Также он не имеет аргументов, поскольку является
унарным.
Приведем пример перегрузки операции преобразования типа для
класса Group из приложения, автоматизирующего работу деканата,
рассмотренного ранее. Добавим метод получения средней оценки
студентов в группе, оформив его в виде оператора преобразования к типу
double.
// операция получения среднего балла успеваемости
//студентов группы – операция преобразования типа
Group::operator double()
{
double averageMark = 0.0;
for (int i = 0; i < count; i++)
averageMark += students[i].GetAverageMark();
averageMark /= count;
return averageMark;
}
87
                           Объектно-ориентированное программирование на С++
Возвращаемым значением этих функций также должна быть ссылка на
соответствующий поток. Это необходимо в случае, если ввод/вывод
осуществляется в один поток частями. Например,
     .    .    .
     Matrix a(2,2), b(2,2), c(2,2);
     cin >> a >> b >> c;
     .    .    .
     cout << a << b << c;
     .    .    .

     Перегрузка операций преобразования типов.
    Класс может содержать методы для осуществления операции
преобразования в другие типы данных или из них. Они реализуются:
       • с помощью конструкторов, когда преобразование происходит
          к типу класса;
       • с помощью специальных операторов, когда объект класса
          преобразуется к другим типам данных.
    Оператор преобразования к типу данных имеет вид:

     operator имя_типа(); // имя_типа – имя оператора

    Этот оператор не имеет возвращаемого типа, поскольку он совпадает
с именем оператора. Также он не имеет аргументов, поскольку является
унарным.
    Приведем пример перегрузки операции преобразования типа для
класса Group из приложения, автоматизирующего работу деканата,
рассмотренного ранее. Добавим метод получения средней оценки
студентов в группе, оформив его в виде оператора преобразования к типу
double.

     // операция получения среднего балла успеваемости
     //студентов группы – операция преобразования типа
     Group::operator double()
     {
          double averageMark = 0.0;
          for (int i = 0; i < count; i++)
               averageMark += students[i].GetAverageMark();
          averageMark /= count;
          return averageMark;
     }



                                                                         87