Стефан Дэвис - С++ для чайников .

Здесь есть возможность читать онлайн «Стефан Дэвис - С++ для чайников .» весь текст электронной книги совершенно бесплатно (целиком полную версию без сокращений). В некоторых случаях можно слушать аудио, скачать через торрент в формате fb2 и присутствует краткое содержание. Город: Москва, Год выпуска: 2007, ISBN: 2007, Издательство: Издательский дом Вильямс. Компьютерное издательство Диалектика, Жанр: Технические науки, Программирование, Программы, на русском языке. Описание произведения, (предисловие) а так же отзывы посетителей доступны на портале библиотеки ЛибКат.

С++ для чайников .: краткое содержание, описание и аннотация

Предлагаем к чтению аннотацию, описание, краткое содержание или предисловие (зависит от того, что написал сам автор книги «С++ для чайников .»). Если вы не нашли необходимую информацию о книге — напишите в комментариях, мы постараемся отыскать её.

empty-line
1
empty-line
4

С++ для чайников . — читать онлайн бесплатно полную книгу (весь текст) целиком

Ниже представлен текст книги, разбитый по страницам. Система сохранения места последней прочитанной страницы, позволяет с удобством читать онлайн бесплатно книгу «С++ для чайников .», без необходимости каждый раз заново искать на чём Вы остановились. Поставьте закладку, и сможете в любой момент перейти на страницу, на которой закончили чтение.

Тёмная тема
Сбросить

Интервал:

Закладка:

Сделать

Класс Savings идентичен в этом отношении классу Checking : всё, что он делает, — это реализует метод withdrawal( ) .

Любой подкласс классаAccount который не переопределяет функциюtype - фото 353

«Любой подкласс классаAccount , который не переопределяет функциюtype( ) , будет абстрактным, и вы не сможете создать объект этого класса.»

[ Помни! ]

Функции, составляющие главную программу, теперь упрощены до предела. Функция getAccount( ) создаёт счёт класса Checking или Savings ( в зависимости от символа, введённого пользователем ). Это единственное место в программе, где происходит непосредственное обращение к подклассам класса Account .

Функция displayResults( ) проходит по связанному списку, опрашивая каждый объект Account для вывода информации о чековом или сберегательном счёте ( а также о других типах счетов, если таковые встретятся в дальнейшем ). Аналогично функция process( ) выполняет вклады и снятия со счетов ( объектов Account ). Как именно выполняются эти действия — определяют сами счета.

Метод displayResults( ) модифицирован для работы со связанным списком. В качестве аргумента этой функции передаётся связанный список, из которого функция считывает информацию. Цикл for начинается с первого объекта в списке, который возвращает вызов Node::firstNode( ) . Переход к следующему объекту в списке осуществляется при помощи функции nextNode( ) . Цикл завершает свою работу, когда вызов nextNode( ) возвращает 0.

Вывод на экран этой версии программы идентичен выводу предыдущей программы BUDGET2 с той разницей, что итоговая информация о счетах выводится в обратном порядке. Это связано с тем, что новые счета добавляются в начало списка.

Классы связанных списков...363

Связанный список создаётся при помощи двух классов — AccountLinkedList и Node , которые определены в заголовочном файле AccountLinkedList.h .

/* AccountLinkedList — поддерживает связанный */

/* список объектов Account */

#ifndef _ACCOUNTLINKEDLIST_

#define _ACCOUNTLINKEDLIST_

_________________

363 стр. Глава 31. Программа BUDGET

/* Данное предварительное объявление — неприятное следствие того, что Account не является частью пространства имён Lists. Этой неприятности мы сумеем избежать в следующей версии программы */

class Account ;

namespace Lists

{

/* Предварительное объявление классов */

class AccountLinkedList ;

class Node ;

/* LinkedList — связанный список объектов Node */

class AccountLinkedList

{

public :

AccountLinkedList( ) { pHead = 0 ; }

void addNode( Node* pNode ) ;

Node* firstNode( ) { return pHead ; }

protected :

Node* pHead ;

} ;

/* Node — узел в связанном списке, указывающий на объект Account */

class Node

{

friend class AccountLinkedList ;

public :

Node( AccountLinkedList* pL , Account* pAcc )

{

pList = pL ;

pNext = 0 ;

pAccount = pAcc ;

pL -> addNode( this ) ;

}

static Node* firstNode( AccountLinkedList* pList )

{

return pList -> firstNode( ) ;

}

Node* nextNode( ) { return pNext ; }

Account* currentAccount( ) { return pAccount ; }

protected :

AccountLinkedList* pList ;

Node* pNext ;

Account* pAccount ;

} ;

}

#endif

_________________

364 стр. Часть 6. Великолепная десятка

Я поместил оба класса — и AccountLinkedList , и Node — в пространство имён Lists для того, чтобы отделить их от класса Account . Класс AccountLinkedList содержит только заголовочный указатель связанного списка объектов Node .

Заголовочный указатель это указатель на первый элемент списка Помни - фото 354

«Заголовочный указатель — это указатель на первый элемент списка.»

[ Помни! ]

Основная работа выполняется в классе Node . Каждый узел Node указывает на следующий в списке объект при помощи члена pNext . Кроме того, узел также указывает на объект Account при помощи указателя pAccount . Указатель pList указывает на связанный список, которому принадлежит данный узел.

Ещё раз взгляните на исходный файл BUDGET3.срр . Функция main( ) определяет объект класса AccountLinkedList — это и есть связанный список. Ссылка на него передаётся конструктору Account . Конструктор Node( ) , который вызывается из конструктора Account , создаёт узел, который является членом данного связанного списка и указывает на создаваемый счёт.

Маленький исходный файл AccountLinkedList.срр нужен для того, чтобы позволить классу AccountLinkedList обратиться к члену Node . Дело в том, что класс Node определён в заголовочном файле после класса AccountLinkedList , поэтому обращаться к его членам в определении класса AccountLinkedList нельзя. Изменение порядка объявлений не решает данную проблему, поскольку класс Node в AccountLinkedList.h также содержит ссылки на класс AccountLinkedList .

Читать дальше
Тёмная тема
Сбросить

Интервал:

Закладка:

Сделать

Похожие книги на «С++ для чайников .»

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


Отзывы о книге «С++ для чайников .»

Обсуждение, отзывы о книге «С++ для чайников .» и просто собственные мнения читателей. Оставьте ваши комментарии, напишите, что Вы думаете о произведении, его смысле или главных героях. Укажите что конкретно понравилось, а что нет, и почему Вы так считаете.

x