Особенности сооружения опор в сложных условиях: Сооружение ВЛ в районах с суровыми климатическими и тяжелыми геологическими условиями...
Типы оградительных сооружений в морском порту: По расположению оградительных сооружений в плане различают волноломы, обе оконечности...
Топ:
Оценка эффективности инструментов коммуникационной политики: Внешние коммуникации - обмен информацией между организацией и её внешней средой...
Основы обеспечения единства измерений: Обеспечение единства измерений - деятельность метрологических служб, направленная на достижение...
Интересное:
Принципы управления денежными потоками: одним из методов контроля за состоянием денежной наличности является...
Инженерная защита территорий, зданий и сооружений от опасных геологических процессов: Изучение оползневых явлений, оценка устойчивости склонов и проектирование противооползневых сооружений — актуальнейшие задачи, стоящие перед отечественными...
Наиболее распространенные виды рака: Раковая опухоль — это самостоятельное новообразование, которое может возникнуть и от повышенного давления...
Дисциплины:
2020-05-08 | 217 |
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 - Не является автором материалов. Исключительное право сохранено за автором текста.
Если вы не хотите, чтобы данный материал был у нас на сайте, перейдите по ссылке: Нарушение авторских прав. Мы поможем в написании вашей работы!