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

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

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

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

empty-line
1
empty-line
4

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

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

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

Интервал:

Закладка:

Сделать

} ;

#endif

_________________

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

Дальнейшее рассмотрение может оказаться проще если вы мысленно замените - фото 356

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

[ Советы ]

Выражение template < class Т > class LinkedList представляет собой предварительное объявление шаблона, необходимое для класса Node .

Не забывайте о том что шаблоны классовLinkedList иNode не являются реальными - фото 357

«Не забывайте о том, что шаблоны классовLinkedList иNode не являются реальными классами до тех пор, пока параметрТ не будет заменён действительным классом.»

[ Помни! ]

Шаблон класса Node сконструирован для работы в качестве узла связанного списка. Каждый узел указывает на объект класса Т , который будет определён позже. Конструктор инициализирует члены-указатели: pList указывает на LinkedList , членом которого является данный объект Node , pObject указывает на объект типа Т , a pNext инициализируется значением 0 , указывающим, что пока узел не является членом списка.

"Активный метод" next ( Node< T >* ) добавляет текущий узел в список путём инициализации указателя pNext . "Пассивный метод" next( ) просто возвращает следующий объект Node< T > в списке. Это обычная практика кодирования, когда функция fn( ) возвращает текущее значение объекта, a fn( Т ) устанавливает его значение на основе аргумента.

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

Исходный код BUDGET4...368

Исходный код программы BUDGET4 практически идентичен коду BUDGET3.

/* BUDGET4.CPP — в этой версии используется */

/* шаблон класса LinkedList */

//

#include

#include

#include

using namespace std ;

#include "LinkedList.h"

/* Account — абстрактный класс, включающий */

/* общие свойства различных счетов */

class Account ;

template class LinkedList< Account > ;

template class Node< Account > ;

class Account

{

public :

Account::Account( LinkedList< Account >* pList ,

unsigned accNo )

{

/* Инициализация данных-членов */

_________________

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

accountNumber = accNo ;

balance = 0 ;

/* Внесение в список */

pNode = new Node< Account >( pList , this ) ;

pList -> addNode( pNode ) ;

count++ ;

}

/* Функции доступа */

int accountNo( ) { return accountNumber ; }

double acntBalance( ) { return balance ; }

static int noAccounts( ) { return count ; }

static Account* first( LinkedList< Account >* pLinkedList )

{

Node< Account >* pNode = pLinkedList -> firstNode( ) ;

return pNode -> current( ) ;

}

Account* next( )

{

Node< Account >* pNextNode = pNode -> next( ) ;

return pNextNode -> current( ) ;

}

/* Функции транзакций */

void deposit( double amount ) { balance += amount ; }

virtual bool withdrawal( double amount )

{

if ( balance < amount )

{

cout << "Недостаточно денег: на счету " << balance

<< ", снимаем " << amount

<< endl ;

return false ;

}

balance -= amount ;

return true ;

}

/* Функция вывода на экран */

void display( )

{

cout << type( )

<< " счёт " << accountNumber

<< " = " << balance

<< endl ;

}

virtual char* type( ) = 0 ;

protected :

Node< Account >* pNode ;

static int count ; /* Количество счетов */

unsigned accountNumber ;

double balance ;

} ;

_________________

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

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

int Account::count = 0 ;

/* Checking — свойства, уникальные для чекового счёта */

class Checking : public Account

{

public :

Checking::Checking( LinkedList< Account >* pLL ,

unsigned accNo ) :

Account( pLL , accNo )

{ }

/* Перегрузка чисто виртуальных функций */

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

Интервал:

Закладка:

Сделать

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

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


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

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

x