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

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

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

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

empty-line
1
empty-line
4

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

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

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

Интервал:

Закладка:

Сделать

_________________

259 стр. Глава 22. Разложение классов

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

Рассмотрим простую программу SeparateModules , которая состоит из модулей, содержащих класс Student , его подкласс GraduateStudent и модуль с функцией main( ) для тестирования этих классов.

Разделение программы - класс student...260

Начнём с логического разделения программы SeparateModules . Заметим, что Student — самодостаточная сущность. Класс Student не зависит ни от каких других функций ( не считая библиотечных функций С++ ). Таким образом, имеет смысл поместить класс Student в отдельный модуль. Поскольку этот класс будет использоваться в разных местах, разобьем его на заголовочный файл с объявлением класса Student.h и файл реализации Student.срр . В идеале заголовочный файл должен содержать ровно один класс, что позволит программе включать только необходимые заголовочные файлы.

Исторически все заголовочные файлы имеют расширениеh но эта традиция - фото 283

«Исторически все заголовочные файлы имеют расширение.h , но эта традиция изменена текущим стандартом С++. Теперь системные заголовочные файлы не имеют вообще никакого расширения. Тем не менее многие программисты продолжают использовать расширение.h , которое позволяет сразу отделить заголовочные файлы от файлов с исходными текстами.»

[ Советы ]

Полученный в результате файл Student.h выглядит следующим образом.

/* Student — базовый класс */

#ifndef _STUDENT_

#define _STUDENT_

namespace Schools

{

class Student

{

public :

Student( char* pszName , int nID ) ;

virtual char* display( ) ;

protected :

/* Имя студента */

char* pszName ;

int nID ;

} ;

}

#endif

#ifndef представляет собой директиву препроцессора, такую же, как и, например, директива #include . Данная директива гласит, что включать следующие за ней строки следует только в том случае, когда её аргумент _STUDENT_ не определён. При первом включении файла _STUDENT_ не определён, но тут же определяется директивой #define_STUDENT_ . Это приводит к тому, что включение файла Student.h в программу будет выполнено только один раз, независимо от того, сколько директив #include встретится в программе.

_________________

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

Определение пространства имён...261

Следующая особенность программы состоит в том, что класс Student определён в пространстве имён Schools .

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

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

Ещё одной причиной для использования пространств имён служат так называемые - фото 284

«Ещё одной причиной для использования пространств имён служат так называемые "коллизии имён", которых надо избегать. Например, классGrade из пространства имёнSchools никак не влияет на возможность использования этого же имени для класса в пространстве имёнFoodProduction

[ Советы ]

Реализация класса student...261

Реализация класса Student помещена мною в файл Student.срр .

/* Student — реализация методов класса Student */

#include

#include

#include

#include

#include "student.h"

namespace Schools

{

Student::Student( char* pszNameArg , int nIDArg )

: nID( nIDArg )

{

pszName = new char[ strlen( pszNameArg ) + 1 ] ;

strcpy( pszName , pszNameArg ) ;

}

/* display — возвращает описание студента */

char* Student::display( )

{

/* Копируем имя студента в блок памяти в куче, который возвращается вызывающей функции */

char* pReturn = new char[ strlen( pszName ) + 1 ] ;

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

Интервал:

Закладка:

Сделать

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

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


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

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

x