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

UptoLike

Андрианова А.А., Исмагилов Л.Н., Мухтарова Т.М.
Вызвать данный оператор явно с указанием типа данных, к которому
осуществляется преобразование, можно следующим образом:
. . .
Group gr991("991Э", 12);
cout << "Средний балл учебной группы " << (double) gr991;
. . .
Также возможен неявный вызов данного оператора:
double aM = gr990;
Когда преобразование осуществляется к типу класса, должен
создаваться объект этого класса. Такое преобразование делают
конструкторы с одним параметром. Например, пусть требуется
преобразовать символьную строку, содержащую номер группы, в объект
класса Group. К этому конструктору можно обратиться как к оператору
преобразования типа, указав имя класса явно, или, не указывая его
(неявное преобразование):
. . .
char* numGr = "991Б";
Group gr991B = (Group)numGr;// явное преобразование
Group gr991B = numGr; // неявное преобразование
. . .
Использование методов с одинаковым именем в разных классах.
Несколько классов могут иметь методы с одинаковыми именами. Это
означает, что действия, выполняемые одноименными методами, могут
различаться в зависимости от того, к какому из классов относится тот или
иной метод. Например, в классе Matrix определим оператор сложения
двух матриц:
// операция сложения двух матриц
Matrix Matrix::operator + (Matrix& ob)
{
if(ob.n == n && ob.m == m)
{
Matrix temp(m, n);
for(int i = 0; i < m; i++)
for(int j = 0; j < n; j++)
temp.a[i][j] = a[i][j] + ob.a[i][j];
return temp;
88
                                Андрианова А.А., Исмагилов Л.Н., Мухтарова Т.М.
    Вызвать данный оператор явно с указанием типа данных, к которому
осуществляется преобразование, можно следующим образом:


     .    .    .
     Group gr991("991Э", 12);
     cout << "Средний балл учебной группы " << (double) gr991;
     .    .    .

     Также возможен неявный вызов данного оператора:

     double aM =   gr990;

    Когда преобразование осуществляется к типу класса, должен
создаваться объект этого класса. Такое преобразование делают
конструкторы с одним параметром. Например, пусть требуется
преобразовать символьную строку, содержащую номер группы, в объект
класса Group. К этому конструктору можно обратиться как к оператору
преобразования типа, указав имя класса явно, или, не указывая его
(неявное преобразование):

     .    .    .
     char* numGr = "991Б";
     Group gr991B = (Group)numGr;// явное преобразование
     Group gr991B = numGr;    // неявное преобразование
     .    .    .

    Использование методов с одинаковым именем в разных классах.
    Несколько классов могут иметь методы с одинаковыми именами. Это
означает, что действия, выполняемые одноименными методами, могут
различаться в зависимости от того, к какому из классов относится тот или
иной метод. Например, в классе Matrix определим оператор сложения
двух матриц:

     // операция сложения двух матриц
     Matrix Matrix::operator + (Matrix& ob)
     {
          if(ob.n == n && ob.m == m)
          {
               Matrix temp(m, n);
               for(int i = 0; i < m; i++)
                    for(int j = 0; j < n; j++)
                         temp.a[i][j] = a[i][j] + ob.a[i][j];
               return temp;


88