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

UptoLike

Объектно-ориентированное программирование на С++
является вещественным, результатом деления будет вещественное число
(25.0 / 10.0 = 2.5). В языке С++ у программиста появляется возможность
задать для собственных типов данных свои методы обработки,
закрепленные за обозначением той или иной операции.
Большинству операций языка С++ соответствуют специальные
операторные функции, имеющие следующий прототип:
тип_возвращаемого_значения operator#
(список_формальных_параметров);
Здесь "#" это знак операции С++. Не все операции можно
перегружать. К запрещенным для перегрузки операциям относятся "." ,
"::", "?:" и некоторые другие. Существует несколько ограничений,
которые следует учитывать при перегрузке операций. Во-первых, нельзя
менять приоритет операций. Во-вторых, нельзя изменять число операндов
операции. К примеру, операция "!" имеет только один операнд, поэтому
и ее перегруженная реализация должна быть унарной. В остальном,
правила перегрузки операций совпадают с правилами перегрузки
функций. Перегруженные операции должны отличаться списками
параметров. Например, операция "*" для матриц может быть
перегружена как функция умножения двух матриц или функция
умножения матрицы на число.
Операторные функции могут быть как методами класса, так и
внешними по отношению к классу функциями. Разберем принципы
создания таких функций для реализации операции умножения в классе
Matrix:
class Matrix
{
// определение структурных свойств
double** a; // адрес двумерного массива
// для хранения матрицы
int m, n; //количество строк и столбцов в матрице
// определение поведенческих свойств
public:
// конструктор создания матрицы определенного размера
Matrix(int, int);
// конструктор копирования
Matrix(const Matrix&);
// деструктор
~Matrix();
void InputMatrix();// метод ввода матрицы
79
                           Объектно-ориентированное программирование на С++
является вещественным, результатом деления будет вещественное число
(25.0 / 10.0 = 2.5). В языке С++ у программиста появляется возможность
задать для собственных типов данных свои методы обработки,
закрепленные за обозначением той или иной операции.
     Большинству операций языка С++ соответствуют специальные
операторные функции, имеющие следующий прототип:

     тип_возвращаемого_значения operator#
                              (список_формальных_параметров);

     Здесь "#" – это знак операции С++. Не все операции можно
перегружать. К запрещенным для перегрузки операциям относятся "." ,
"::", "?:" и некоторые другие. Существует несколько ограничений,
которые следует учитывать при перегрузке операций. Во-первых, нельзя
менять приоритет операций. Во-вторых, нельзя изменять число операндов
операции. К примеру, операция "!" имеет только один операнд, поэтому
и ее перегруженная реализация должна быть унарной. В остальном,
правила перегрузки операций совпадают с правилами перегрузки
функций. Перегруженные операции должны отличаться списками
параметров. Например, операция "*" для матриц может быть
перегружена как функция умножения двух матриц или функция
умножения матрицы на число.
     Операторные функции могут быть как методами класса, так и
внешними по отношению к классу функциями. Разберем принципы
создания таких функций для реализации операции умножения в классе
Matrix:

     class Matrix
     {
          // определение структурных свойств
          double** a;    // адрес двумерного массива
                         // для хранения матрицы
          int m, n;      //количество строк и столбцов в матрице
          // определение поведенческих свойств
     public:
          // конструктор создания матрицы определенного размера
          Matrix(int, int);
          // конструктор копирования
          Matrix(const Matrix&);
          // деструктор
          ~Matrix();
          void InputMatrix();// метод ввода матрицы
                                                                         79