Связь и интернет Архив Программирование
   
Сделать стартовойСделать закладку            
   ПОИСК  
   
Главная / C / C++ / Введение в язык C++ /
8  Perl
8  PHP
8  JavaScript
8  HTML
8  DHTML
8  XML
8  CSS
8  C / C++
8  Pascal и Delphi
8  Турбо Ассемблер
8  MySQL
8  CASE-технологии
8  Алгоритмы
8  Python
8  Обратная связь
8  Гостевая книга
Новости о мире


8  Введение
8  Функции Операции
8  Определяемое Преобразование Типа
8  Константы
8  Большие Объекты
8  Присваивание и Инициализация
8  Индексирование
8  Вызов Функции
8  Класс Строка
8  Друзья и Члены
8  Предостережение
Перегрузка Операций - Программирование от RIN.RU
Перегрузка Операций

Здесь водятся Драконы! - старинная карта




В этой главе описывается аппарат, предоставляемый в C++ для перегрузки операций. Программист может определять смысл операций при их применении к объектам определенного класса. Кроме арифметических, можно определять еще и логические операции, операции сравнения, вызова () и индексирования [], а также можно переопределять присваивание и инициализацию. Можно определить явное и неявное преобразование между определяемыми пользователем и основными типами. Показано, как определить класс, объект которого не может быть никак иначе скопирован или уничтожен кроме как специальными определенными пользователем функциями.







SpeedSIP значительно снижает расходы на телефонную связь и сервисы:
  • бесплатные звонки внутри сети,
  • выгодные международные и междугородные звонки,
  • СМС по всему миру,
  • покупка прямого номер любой страны,
  • видеосвязь и видеоконференции.


  • В этом разделе :

    8  Введение
    Часто программы работают с объектами, которые являются конкретными представлениями абстрактных понятий.

    8  Функции Операции
    Функция операция описывается и может вызываться так же, как любая другая функция. Использование операции - это лишь сокращенная запись явного вызова функции операции.

    8  Определяемое Преобразование Типа
    Приведенная во введении реализация комплексных чисел слишком ограничена, чтобы она могла устроить кого-либо, поэтому ее нужно расширить. Это будет в основном повторением описанных выше методов.

    8  Константы
    Константы классового типа определить невозможно в том смысле, в каком 1.2 и 12e3 являются константой типа double.

    8  Большие Объекты
    При каждом применении для comlpex бинарных операций, описанных выше, в функцию, которая реализует операцию, как параметр передается копия каждого операнда. Расходы на копирование каждого double заметны, но с ними вполне можно примириться. К сожалению, не все классы имеют небольшое и удобное представление. Чтобы избежать ненужного копирования, можно описать функции таким образом, чтобы они получали ссылочные параметры.

    8  Присваивание и Инициализация
    Строка - это структура данных, состоящая из вектора символов и длины этого вектора. Вектор создается конструктором и уничтожается деструктором. Однако это может привести к неприятностям.

    8  Индексирование
    Чтобы задать смысл индексов для объектов класса используется функция operator[]. Второй параметр (индекс) функции operator[] может быть любого типа. Это позволяет определять ассоциативные массивы и т.п.

    8  Вызов Функции
    Вызов функции, то есть запись выражение(список_выражений), можно проинтерпретировать как бинарную операцию, и операцию вызова можно перегружать так же, как и другие операции.

    8  Класс Строка
    Вот довольно реалистичный пример класса string. В нем производится учет ссылок на строку с целью минимизировать копирование и в качестве констант применяются стандартные символьные строки C++.

    8  Друзья и Члены
    Теперь, наконец, можно обсудить, в каких случаях для доступа к закрытой части определяемого пользователем типа использовать члены, а в каких - друзей. Некоторые операции должны быть членами: конструкторы, деструкторы и виртуальные функции.

    8  Предостережение
    Как и большая часть возможностей в языках программирования, перегрузка операций может применяться как правильно, так и неправильно. В частности, можно так воспользоваться возможность определять новые значения старых операций, что они станут почти совсем непостижимы.

    8  Введение
    8  Функции Операции
    8  Определяемое Преобразование Типа
    8  Константы
    8  Большие Объекты
    8  Присваивание и Инициализация
    8  Индексирование
    8  Вызов Функции
    8  Класс Строка
    8  Друзья и Члены
    8  Предостережение

    8  В тему

    Исторические замечания

    Эффективность и структура

    Размышления о программировании на C++

    Правила Правой Руки

    Турне по C++

    Описания и Константы

    Выражения и операторы

    Функции и Файлы

    Классы

    Производные Классы

    Потоки

     
      
      
        Copyright ©  RIN 2003 - 2004      * Обратная связь