Практикум на ЭВМ технология программирования в среде С++




Скачать 409.93 Kb.
НазваниеПрактикум на ЭВМ технология программирования в среде С++
страница9/12
Дата публикации31.05.2014
Размер409.93 Kb.
ТипДокументы
literature-edu.ru > Курсовая работа > Документы
1   ...   4   5   6   7   8   9   10   11   12

5.2Перегрузка операции присваивания


О перегрузке этой операции следует поговорить особо по нескольким причинам.

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

Во-вторых, операция присваивания может быть определена только в форме метода класса.

В-третьих, операция присваивания не наследуется (в отличие от всех остальных операций).

Например, для класса Man из задачи 1.1 перегрузку операции присваивания можно определить следующим образом:

II Man.h (интерфейс класса)

class Man {

Public:

// . . .

Man& operator =(const Man&): // операция присваивания

Private:

char* pName:
// Мап.срр (реализация класса) II ...

Man& Man::operator =(const ManS man) {

if (this == &man) return *this; // проверка на самоприсваивание

delete [] pName; // уничтожить предыдущее значение

pName = new char[strlen(man.pName) + 1]:

strcpy(pName. man.pName);

birth_year = man.birth_year:

pay = man.pay;

return *this;

Обратите внимание на несколько простых, но важных моментов при реализации операции присваивания:

  • убедитесь, что не выполняется присваивание вида х = х. Если левая и правая части ссылаются на один и тот же объект, то делать ничего не надо. Если не перехватить этот особый случай, то следующий шаг уничтожит значение, на которое указывает pName, еще до того, как оно будет скопировано;

  • удалите предыдущие значения полей в динамически выделенной памяти;

  • выделите память под новые значения полей;
    скопируйте в нее новые значения всех полей;

  • возвратите значение объекта, на которое указывает this (то есть *this).



6Связные списки

6.1Технология связных списков


Рассматривается технология решения задач, основанная на технике связных списков. Списковая структура определяется как набор узлов (ячеек), связанных в цепочку.

Односвязный список. Каждый узел списка, исключая последний узел, указывает на следующий узел. Такой список называется односвязным. Для работы с односвязным списком мы должны знать адрес первого узла. Любой другой узел списка можно получить последовательным перебором предшествующих узлов.

Start



Эл. 1



Эл. 2

→....→

Эл. N



Nul

Значение Start указывает на первый узел списка, Nul – пустой указатель. Указатель Nul не указывает никуда, но должен быть приведен, поскольку указание на следующий узел обязательное свойство любого узла связного списка. Кроме ссылки на следующий узел, узел списка может хранить любую информацию.

Стандартными операциями над списком являются вставка и удаление узлов. Для удаления узла нужно дойти до узла, предшествующего удаляемому, и переключить его связь на адрес узла последующего удаляемому узлу.

Для вставки узла в список меняют указатель предшествующего узла на адрес вставляемого узла, а указателю вставляемого дают значение адреса следующего узла списка.

Двусвязный список Если существует необходимость двигаться по списку в обоих направлениях, формируется двусвязный список. От односвязного списка он отличается добавочной – обратной связью. Обратная связь устроена по тем же законам, что и прямая связь.

Start

Nul





Эл. 1





Эл. 2

→….

←....





Эл. N





Nul

Start

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

Данные абстрактного типа. Для связанных списков мы установили основное свойство узла – хранить ссылку на адрес соседнего узла, определили операцию движения по списку и операции вставки и удаления узлов. При этом мы совершенно не интересуемся конкретной реализацией указанных свойств.

Объекты информатики, определенные данным образом, носят название «Данные абстрактного типа». Этих свойств достаточно для формирования псевдокода решения задачи. Метод реализации данных абстрактного типа разрабатывают позже - на этапе кодирования, в зависимости от реализованного псевдокода.

1   ...   4   5   6   7   8   9   10   11   12

Похожие:

Практикум на ЭВМ технология программирования в среде С++ iconПрактикум на ЭВМ среда программирования и отладка программ
Рыков В. И. Среда Microsoft Visual C++ и отладка программ. Технология работы с языком С++. /Издание Башкирского ун-та. Уфа 2006....

Практикум на ЭВМ технология программирования в среде С++ iconОсновы информатики и вычислительной техники системы программирования
Рассматриваются основные понятия языков программирования. Излагаются процедурный и объектный подходы в программировании. Более подробно...

Практикум на ЭВМ технология программирования в среде С++ iconРабочая программа по курсу «основы Программирования на языке ассемблер»
Программа предназначена для обучения основам программирования на языке низкого уровня Ассемблере учащихся средних школ, учреждений...

Практикум на ЭВМ технология программирования в среде С++ iconПрограмма учебной дисциплины «Управление данными»
«Математика», «Информатика», «Программирование на языках высокого уровня», «Дискретная математика», «Объектно-ориентированное программирование»,...

Практикум на ЭВМ технология программирования в среде С++ iconПрактикум по спортивной психологии Санкт-Петербург
...

Практикум на ЭВМ технология программирования в среде С++ iconРеферат по теме: "Строение персональных компьютеров ibm pc"
Эвм и мини ЭВМ. Это стало предметом серьезного беспокойства фирмы ibm (International Bussines Machines Corporation) ведущей компании...

Практикум на ЭВМ технология программирования в среде С++ iconКонспект лекций доцента и. А. Волковой по курсу «системы программирования»
Система программирования – комплекс программных инструментов и библиотек, который поддерживает создание и существование программного...

Практикум на ЭВМ технология программирования в среде С++ iconПлан лекции: Задачи, решаемые вычислительными центрами Структура...
Создание вычислительных центров является способом повышения эффективности работы ЭВМ. Вычислительный центр объединяет технику различных...

Практикум на ЭВМ технология программирования в среде С++ iconМентальное моделирование как технология понимания текста на примере книг Карлоса Кастанеды
Ваша собственная ментальная программа. Поэтому вполне может случиться, что некоторые ментальные программы не могут быть отмоделированы...

Практикум на ЭВМ технология программирования в среде С++ iconПрактикум по когнитивной терапии
М15 Практикум по когнитивной терапии: Пер с англ. — Спб.: Речь, 2001. — 560 с. Isbn 5-9268-0036-6

Литература


При копировании материала укажите ссылку © 2015
контакты
literature-edu.ru
Поиск на сайте

Главная страница  Литература  Доклады  Рефераты  Курсовая работа  Лекции