Разделение программы - класс student...260
Начнём с логического разделения программы SeparateModules. Заметим, что Student — самодостаточная сущность. Класс Student не зависит ни от каких других функций ( не считая библиотечных функций С++ ). Таким образом, имеет смысл поместить класс Student в отдельный модуль. Поскольку этот класс будет использоваться в разных местах, разобьем его на заголовочный файл с объявлением класса Student.h и файл реализации Student.срр. В идеале заголовочный файл должен содержать ровно один класс, что позволит программе включать только необходимые заголовочные файлы.
«Исторически все заголовочные файлы имеют расширение .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. Наследование
Больше книг — больше знаний!
Заберите 20% скидку на все книги Литрес с нашим промокодом
ПОЛУЧИТЬ СКИДКУ