Статья : Перегрузка операций 


Полнотекстовый поиск по базе:

Главная >> Статья >> Информатика, программирование


Перегрузка операций




Перегрузка операций

Настоящий класс ostream определяет операцию <<, чтобы сделать удобным вывод нескольких объектов одним оператором. Давайте посмотрим, как это сделано.

Чтобы определить @, где @ - некоторая операция языка C++, для каждого определяемого пользователем типа вы определяете функцию с именем operator@, которая получает параметры соответствующего типа. Например:

class ostream {

//...

ostream operator<<(char*);

};

ostream ostream::operator<<(char* p)

{

while (*p) buf.sputc(*p++);

return *this;

}

определяет операцию << как член класса ostream, поэтому s< ");

а если применить операцию взятия адреса, то вы получите адрес объекта, на который ссылается ссылка:

&s1 == &my_out

Первая очевидная польза от ссылок состоит в том, чтобы обеспечить передачу адреса объекта, а не самого объекта, в функцию вывода (в некоторых языках это называется передачей параметра по ссылке):

ostream& operator<<(ostream& s, complex z) {

return s << "(" << z.real << "," << z.imag << ")";

}

Достаточно интересно, что тело функции осталось без изменений, но если вы будете осуществлять присваивание s, то будете воздействовать на сам объект, а не на его копию. В данном случае то, что возвращается ссылка, также повышает эффективность, поскольку очевидный способ реализации ссылки - это указатель, а передача указателя гораздо дешевле, чем передача большой структуры данных.

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

class istream {

//...

int state;

public:

istream& operator>>(char&ap;);

istream& operator>>(char*);

istream& operator>>(int&);

istream& operator>>(long&);

//...

};

Заметьте, что для чтения long и int используются разные функции, тогда как для их печати требовалась только одна. Это вполне обычно, и причина в том, что int может быть преобразовано в long по стандартным правилам неявного преобразования, избавляя таким образом программиста от беспокойства по поводу написания обеих функций ввода.

Список литературы

Для подготовки данной работы были использованы материалы с сайта http://www.realcoding.net

Похожие работы:

  • Операции аренды нежилого помещения

    Курсовая работа >> Государство и право
    ... я буду рассматривать проведение операции аренды нежилого помещения. Возникновение ... я разработаю, структуру проведения операции аренды нежилого помещения, её принципы ... электрической энергией, не допускать перегрузки электросетей; не производить перепланировку, ...
  • Turbo C++ Programer`s guide

    Реферат >> Информатика, программирование
    ... и их объектам, атакже механизм перегрузки операций. Перегрузка позволяет переопределять действие любых стандартных ... неоднозначности зависитот переданныхпри вызове операции стандартных аргументов. Перегрузка операции присвоения = Операцияприсвоения = может ...
  • Объектно-Ориентированное программирование

    Реферат >> Информатика, программирование
    ... ООП. Переопределение операторов (перегрузка операций) В С++ понятие оператора (операции) трактуется очень широко: ... операций. Перегрузка операций является, фактически, одним из видов перегрузки функций. Для перегрузки операции задается функция операции ...
  • Программирование действий над матрицами на языке С++

    Курсовая работа >> Информатика, программирование
    ... язык, дополнять его новыми операциями и синтаксическими конструкциями (а перегрузка операций является одним из таких ... , понятной и простой форме. Например, в приложении к перегрузке операций: создание библиотеки сложных математических типов ...
  • Основы программирования в C++

    Реферат >> Информатика, программирование
    ... и деструкторы Наследование Указатель this Друзья Перегрузка операций Константные объекты и константные методы Литература ... .имя_функции и указатель_на_объект->имя_функции 8. Перегрузка операций На все операции языка C++, кроме операций объявления, new, delete ...
  • Язык программирования C++

    Реферат >> Информатика, программирование
    ... c производными классами и виртуальными функциями). Возможность в С++ перегрузки операций и свобода размещения описаний всюду, где ... Хорошим примером такого расширения является перегрузка операций. Поддержка объектно-ориентированного программирования Поддержку ...
  • Международные транспортные операции

    Курсовая работа >> Право, юриспруденция
    ... К У Р С О В А Я Р А Б О Т А по Международным бизнес - операциям Международные транспортные операции Исполнитель: студент гр.6111 ... с погрузкой. Многие договоры перевозки, предусматривающие перегрузку товара в промежуточных пунктах с целью достижения ...
  • Транспортно-экспедиционные операции

    Курсовая работа >> Маркетинг
    ... перегрузку грузов от поставщика потребителю, но и большое количество экспедиторских, информационных операций ... единице или транспортном средстве без перегрузки самого груза при его ... единице или транспортном средстве без перегрузки самого груза при его ...
  • Коммерческие операции в портах. Разработка тарифов на перевозку грузов

    Курсовая работа >> Менеджмент
    ... погрузки (выгрузки). Очередность выполнения коммерческих операций на причалах грузовладельцев: 1. предъявление отправителем ... естественных потерь грузов при перевозке, перегрузке, хранении, улучшение схемы документооборота, упрощение ...
  • Организация международных грузовых автомобильных перевозок

    Реферат >> Транспорт
    ... , разгрузку, по­дачу транспортных средств, перегрузку, складирование. Погрузка — операция перемещения груза с места постоянного ... постоянного хранения или временного накопления. Перегрузкаоперация перемещения груза с одного транспорт­ного средства ...