
- •1. Объявление класса. Примеры. Понятие инкапсуляции, полиформизма, наследования.
- •2. Доступ к членам класса. Управление доступом к членам класса. Указатель this. Примеры.
- •3. Конструкторы и деструкторы. Параметризованные конструкторы. Примеры.
- •4. Дружественные ф-ции. Примеры.
- •5. Перегрузка функций. Значение аргументов ф-ции по умолчанию. Примеры.
- •6. Наследование. Примеры.
- •7. Передача объектов в ф-ции и возврат объекта из ф-ции. Массивы объектов. Примеры.
- •8. Перегрузка операторов при помощи функций-членов класса. Примеры.
- •9. Перегрузка операторов при помощи дружественных ф-ций. Примеры.
- •10. Ссылки, ссылки на объекты. Примеры.
- •11. Конструктор копирования. Примеры
- •12. Наследование и спецификаторы доступа. Примеры.
- •13. Конструкторы и деструкторы производных классов. Примеры.
- •14. Указатели и ссылки на производные типы. Примеры.
- •Ссылки на производные классы
- •15. Виртуальные ф-ции. Примеры.
- •16. Чисто виртуальные ф-ции и абстрактные классы. Примеры.
- •17. Обработка исключений. Примеры.
- •18. Создание собственных операторов вставки и извлечения. Примеры.
- •19. Файловый ввод-вывод. Примеры.
- •20. Формирование ввода-вывода. Примеры.
- •21. Двоичные файлы. Примеры.
- •22. Произвольный доступ. Примеры.
- •23. Ввод-вывод в массивы Примеры.
- •24. Класс string. Примеры.
- •25. Функции-шаблоны. Примеры.
- •Явная перегрузка функций-шаблонов
- •26. Классы-шаблоны. Примеры.
- •27. Пространства имён. Примеры.
- •28. Статические члены класса. Примеры.
- •30. Идентификация типа во время исполнения. Примеры.
- •31. Новые операторы приведения типов. Примеры.
- •32. Контейнерные классы. Примеры.
1. Объявление класса. Примеры. Понятие инкапсуляции, полиформизма, наследования.
Определение класса
Общий вид объявления класса следующий:
class имя_класса{
private: данные и функции
protected: защищённые данные и функции
public: публичные данные и функции
}список объектов;
Элементы класса
Элементы класса делятся на две основные категории:
1. данные, называемые элементами-данными;
2. код, называемый элементами-функциями или методами.
Элементы данных
Элементы-данные классов С++ такие же, как и элементы структур языка С++ с некоторыми дополнениями:
1. элементами-данными могут быть перечислимые типы, битовые поля или представители ранее объявленного класса;
2. элемент-данное класса может быть указателем или ссылкой на представителя этого класса.
Инкапсуляция представляет собой механизм, который связывает вместе код и данные и который хранит их от внешнего воздействия и от неправильного использования. Объект представляет собой логическое целое, включающее в себя данные и код для работы с этими данными.
Полиморфизм представляет собой атрибут, который позволяет использовать один и тот же интерфейс при реализации целого класса различных действий. Выбор того, какое именно действие будет совершено, определяется конкретной ситуацией.
Наследование представляет собой процесс, благодаря которому один объект может наследовать, приобретать свойства от другого объекта.
2. Доступ к членам класса. Управление доступом к членам класса. Указатель this. Примеры.
Управление доступом
В С++ можно ограничить видимость данных и функций класса при помощи меток public, protected, private. Метка-спецификатор доступа применяется ко всем элементам класса, следующим за ней, пока не встретится другая метка или кончится определение класса.
Метка-спецификатор public используется тогда, когда элементы-данные и функции-элементы класса доступны для функций-элементов и других функций программы, в которой имеется представитель класса.
Метка-спецификатор protected используется в том случае, когда элементы данных и функции-элементы доступны для функций-элементов данного класса и классов производных от него.
Метка-спецификатор private используется, если элементы-данные и функции-элементы должны быть доступны только для функций-элементов данного класса. В классе элементы имеют по умолчанию доступ private.
Элементы класса
Элементы класса делятся на две основные категории:
1. данные, называемые элементами-данными;
2. код, называемый элементами-функциями или методами.
Элементы данных
Элементы-данные классов С++ такие же, как и элементы структур языка С++ с некоторыми дополнениями:
1. элементами-данными могут быть перечислимые типы, битовые поля или представители ранее объявленного класса;
2. элемент-данное класса может быть указателем или ссылкой на представителя этого класса.
Элементы функции
Элемент-функция является функцией, объявленной (описанной) внутри определения класса. Тело функции может также определяться внутри определения класса, в этом случае функция называется встроенной (inline) функцией-элементом. Когда тело функции определяется вне тела класса, перед именем функции ставится префикс из имени класса и операции разрешения видимости (::).
Например:
class queue {
int q[100];
int sloc, rloc;
public: void init();
void qput(int i);
int qget();
};
void queue::init()
{
rloc=sloc=0;
}
void queue::qput(int i)
{
if (sloc==99) {
cout << "Queue is full.\n";
return;
}
sloc++;
q[sloc]=i;
}
int queue::qget()
{
if (rloc==sloc) {
cout << "Queue underflow.\n";
return 0;
}
rloc++;
return q[rloc];
}
Доступ к элементам-данным
Функции-элементы находятся в области действия класса, в котором они определены. Т.о. они могут обращаться к любому элементу класса, используя просто имя переменной. Обычные функции или функции-элементы другого класса могут получить доступ к элементам-данным с помощью операции . или
->, применяемых к представителю или указателю на представитель класса.
Пример.
class coord
{
public: int x, y; // координаты x и y
};
void main()
{
coord org; // представитель класса координат
coord *orgptr = &org; // указатель на представитель класса
org.x = 0; // задание значения координаты x
orgptr->y = 0; // задание значения координаты y
}
Указатель this
Каждая нестатическая функция-элемент имеет доступ к объекту, для которого вызвана, через ключевое слово this. Типом this является: тип_класса *.
Пример.
class simple
{
public: simple();
void greet() { cout<<“ Hello!”;};
};
simple::simple()
{
greet(); // вызов
this>greet(); // функции
(*this).greet(); // greet()
}
Т.к. функции-элементы могут обращаться ко всем элементам класса просто по имени, в основном указатель this используется для возврата указателя (return this) или ссылки (return *this) на подразумеваемый объект.