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

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

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

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

empty-line
1
empty-line
4

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

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

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

Интервал:

Закладка:

Сделать

{

public :

virtual void withdrawal( float amnt ) ;

} ;

void fn( Account *pAcс )

{

/* снять некоторую сумму */

pAcc -> withdrawal( 100.00f ) ;

/* Этот вызов недопустим, поскольку withdrawal( )не является членом класса Account */

}

int main( )

{

Savings s ; /* Открыть счёт */

fn( & s ) ;

/* Продолжение программы */

}

Представьте себе, что вы открываете сберегательный счёт s . Затем вы передаёте адрес этого счёта функции fn( ) , которая пытается выполнить функцию withdrawal( ) . Однако, поскольку функция withdrawal( ) не член класса Account , компилятор сгенерирует сообщение об ошибке.

Взгляните, как чисто виртуальная функция помогает решить эту проблему. Ниже представлена та же ситуация с абстрактным классом Account :

class Account

{

/* Почти то же, что и в предыдущей программе, однако функция withdrawal( ) определена */

virtual void withdrawal( float amnt ) = 0 ;

} ;

class Savings : public Account

{

public :

virtual void withdrawal( float amnt ) ;

} ;

void fn( Account *pAcc )

{

/* Снять некоторую сумму. Теперь этот код будет работать */

рАсс -> withdrawal( 100.00f ) ;

}

int main( )

{

Savings s ; /* Открыть счёт */

fn( & s ) ;

/* Продолжение программы */

}

_________________

258 стр. Часть 4. Наследование

Ситуация та же, но теперь класс Account содержит функцию-член withdrawal( ) . Поэтому, когда компилятор проверяет, определена ли функция pAcc -> withdrawal( ) , он видит ожидаемое определение Account::withdrawal( ) . Компилятор счастлив. Вы счастливы. А значит, и я тоже счастлив. ( Честно говоря, для того чтобы сделать меня счастливым, достаточно футбола и холодного пива. )

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

►Разделение исходного кода С++...259

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

Программист может разделить единую программу на отдельные файлы, известные как модули. Эти отдельные исходные файлы компилируются раздельно, а затем объединяются в одну программу в процессе компоновки. Модули могут быть выделены в отдельные группы, известные как пространства имён ( namespaces ).

Процесс объединения раздельно скомпилированных модулей в единый выполнимый - фото 281

«Процесс объединения раздельно скомпилированных модулей в единый выполнимый файл называется компоновкой, илисвязыванием ( linking ) — линкованием.»

[ Технические подробности ]

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

Инкапсуляция представляет собой одно из преимуществ объектноориентированного - фото 282

«Инкапсуляция представляет собой одно из преимуществ объектно-ориентированного программирования.»

[ Помни! ]

Во-вторых, гораздо проще разобраться в программе ( а следовательно, написать её и отладить ), которая состоит из нескольких тщательно разработанных модулей, чем в одном файле, переполненном классами и функциями.

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

И наконец, вопрос времени. Компилятору наподобие Visual С++ .NET или Dev-C++ не требуется много времени, чтобы скомпилировать примеры из этой книги. Однако серьёзные коммерческие программы состоят из миллионов строк кода, и полная компиляция и сборка таких программ может потребовать больше суток машинного времени. Вряд ли программист сможет нормально работать, если после внесения любого изменения ему потребуются сутки на сборку приложения. Гораздо быстрее оказывается перекомпилировать только один файл с внесёнными изменениями, после чего быстро скомпоновать приложение из уже скомпилированных модулей.

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

Интервал:

Закладка:

Сделать

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

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


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

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

x