Индивидуальные и групповые автопоилки: для животных. Схемы и конструкции...
Папиллярные узоры пальцев рук - маркер спортивных способностей: дерматоглифические признаки формируются на 3-5 месяце беременности, не изменяются в течение жизни...
Топ:
Комплексной системы оценки состояния охраны труда на производственном объекте (КСОТ-П): Цели и задачи Комплексной системы оценки состояния охраны труда и определению факторов рисков по охране труда...
Процедура выполнения команд. Рабочий цикл процессора: Функционирование процессора в основном состоит из повторяющихся рабочих циклов, каждый из которых соответствует...
История развития методов оптимизации: теорема Куна-Таккера, метод Лагранжа, роль выпуклости в оптимизации...
Интересное:
Берегоукрепление оползневых склонов: На прибрежных склонах основной причиной развития оползневых процессов является подмыв водами рек естественных склонов...
Аура как энергетическое поле: многослойную ауру человека можно представить себе подобным...
Мероприятия для защиты от морозного пучения грунтов: Инженерная защита от морозного (криогенного) пучения грунтов необходима для легких малоэтажных зданий и других сооружений...
Дисциплины:
2020-05-08 | 223 |
5.00
из
|
Заказать работу |
|
|
Объявление класса (class declaration) представляет собой описание членов класса: данных и методов. Часто объявление класса называют спецификацией. Члены-данные объявляются согласно правилам объявления переменных и могут иметь любой тип, включая тип класса и указателя на тип класса. Функции-члены в спецификации представлены прототипами.
Спецификация класса, как правило, размещается в отдельном заголовочном файле с расширением.h и имеет следующий формат:
class имя_класса {
private:
// закрытые члены класса protected:
// защищенные члены класса
public:
// открытые члены класса
};
Объявление класса начинается с ключевого слова class, за которым следует имя класса, и заканчивается точкой с запятой. Внутри фигурных скобок может находиться любое количество секций со спецификаторами доступа, причем спецификаторы могут повторяться
Спецификаторы доступа к членам класса
Спецификаторы доступа определяют доступность данных и методов в программе. Существуют следующие спецификаторы доступа:
public — открытый режим доступа. Члены класса доступны за пределами класса любым функциям программы;
protected — защищенный режим доступа. Члены класса доступны для методов этого класса, производных классов и дружественных классов. Производные классы и классы-друзья рассматриваются в следующих главах книги;
private — закрытый режим доступа. Члены класса доступны только для методов этого класса и классов-друзей.
Методы, которые предоставляют сервисные услуги класса, всегда объявляются со спецификатором public. Методы, используемые классом для собственных нужд, имеют спецификатор доступа private. Эти методы обеспечивают реализацию открытых функций-членов и скрывают сложности их реализации.
|
Реализация класса
Определение объявленных в спецификации класса методов располагается в отдельном файле с расширением. срр, называемом файлом реализации класса.
Когда файлы спецификации и реализации класса находятся в разных файлах, заголовок функции-члена должен включать область видимости согласно формату:
тип_функции-члена имя_класса:: имя_функции-члена (список параметров)
Оператор разрешения области видимости:: используется в заголовке с той целью, чтобы все объявленные внутри класса идентификаторы обрабатывались внутри их собственного пространства имен, а также во избежание неоднозначности использования имен. Запись тела метода ничем не отличается от записи в обычной функции. В файл реализации класса следует включить файл со спецификацией класса, а также необходимые при определении функций заголовки стандартных библиотек.
#pragma once
Пример
// Book.h - спецификация класса СВоок
#pragma once class
CBook {
private:
char m_author [ 50 ]; // автор
char *m_pTitle; // указатель на название
int m_year; // год издания
public:
// методы установки значений
void setAuthor (const char*);
void setTitle (const char*);
void setYear (const int);
// методы возврата значений
char* getAuthor (void);
char* getTitle (void);
int getYear (void);
};
// Book.срр - реализация класса СВоок
#include "Book.h"
#include <string> // установить автора
void CBook:: setAuthor (const char* author) {
strncpy_s (m_author, 50, author, 49);
if (strlen (author) > 49) m_author [ 49 ] = '\0';
}
// установить название
void CBook:: setTitle (const char* title) {
delete [ ] m_pTitle;
m_pTitle = new char [strlen (title)+ 1];
strcpy_s (m_pTitle, strlen (title) + 1, title);
}
// установить год издания
void CBook:: setYear (const int year)
{ m_year = year; }
// вернуть автора
char* CBook:: getAuthor (void)
{ return m_author; }
// вернуть название
char* CBook:: getTitle (void)
{ return m_pTitle; }
// вернуть год издания
int CBook:: getYear (void)
{ return m_year; }
Определение класса
Определение класса smallobj в приведенной выше программе выглядит следующим образом:
class smallobj // определение класса
{
private:
int somedata; // поле класса
public:
|
void setdata(int d) // метод класса, изменяющий значение поля
{ somedata = d; }
void showdata() // метод класса, отображающий значение поля
{cout << "Значение поля равно " << somedata << endl; }
};
Определение начинается с ключевого слова class, за которым следует имя класса; в данном случае этим именем является smallobj. Подобно структуре, тело класса заключено в фигурные скобки, после которых следует точка с запятой (;) (не забывайте ставить этот знак. Конструкции, связанные с типами данных, такие, как структуры и классы, требуют после своего тела наличия точки с запятой, в отличие от конструкций, связанных с передачей управления, например функций и циклов).
private и public
Тело класса содержит два не встречавшихся раньше ключевых слова: private и public. Сейчас мы раскроем их смысл.
Ключевой особенностью объектно-ориентированного программирования является возможность сокрытия данных. Этот термин понимается в том смысле, что данные заключены внутри класса и защищены от несанкционированного доступа функций, расположенных вне класса. Если необходимо защитить какие-либо данные, то их помещают внутрь класса с ключевым словом private. Такие данные доступны только внутри класса. Данные, описанные с ключевым словом public, напротив, доступны за пределами класса.
Данные класса
Класс smallobj содержит всего одно поле данных somedata, имеющее тип int. Данные, содержащиеся внутри класса, называют данными-членами или полями класса. Число полей класса, как и у структуры, теоретически может быть любым. Поскольку перед описанием поля somedata стоит ключевое слово private, это поле доступно только внутри класса.
Методы класса
Методы класса — это функции, входящие в состав класса. Класс smallobj содержит два метода: setdata() и showdata(). Тела обоих методов состоят из одного оператора, который записан на одной строке с фигурными скобками, ограничивающими тело функции. Разумеется, можно использовать и более традиционный способ оформления функций:
void setdata(int d) // метод класса, изменяющий значение поля
{ somedata = d; }
void showdata() // метод класса, отображающий значение поля
{cout << "Значение поля равно " << somedata << endl; }
};
В тех случаях, когда тела методов невелики по размеру, имеет смысл использовать более сжатую форму их записи.
Поскольку методы setdata() и showdata() описаны с ключевым словом public, они доступны за пределами класса smallobj. Мы покажем, каким образом можно получить доступ к этим функциям, чуть позже.
|
|
Наброски и зарисовки растений, плодов, цветов: Освоить конструктивное построение структуры дерева через зарисовки отдельных деревьев, группы деревьев...
Общие условия выбора системы дренажа: Система дренажа выбирается в зависимости от характера защищаемого...
Архитектура электронного правительства: Единая архитектура – это методологический подход при создании системы управления государства, который строится...
Состав сооружений: решетки и песколовки: Решетки – это первое устройство в схеме очистных сооружений. Они представляют...
© cyberpedia.su 2017-2024 - Не является автором материалов. Исключительное право сохранено за автором текста.
Если вы не хотите, чтобы данный материал был у нас на сайте, перейдите по ссылке: Нарушение авторских прав. Мы поможем в написании вашей работы!