
- •Структуры
- •Массив структур
- •Указатели на структуру
- •Битовые поля
- •Объединения
- •Перечисления
- •Переименование типов
- •Открытие файла
- •Функции работы с файлами
- •Форматный ввод/вывод
- •Ввод/вывод строк. Функции позиционирования
- •Чтение из двоичного файла и запись в него
- •Свойства ООП
- •1.1 Свойства ООП
- •Понятие класса в С++
- •1.2 Понятие класса С++
- •Создание класса
- •1.3 Создание класса
- •Члены класса
- •1.4 Члены класса
- •Инкапсуляция
- •1.5. Инкапсуляция
- •1.6 Функции-члены класса
- •Реализация понятия «дата» при помощи структуры
- •1.7 Реализация понятия «дата» при помощи структуры
- •Реализация понятия «дата» при помощи класса
- •1.8 Реализация понятия «дата» при помощи класса
- •Определение и вызов функций–членов класса
- •Выводы. Примеры
- •1.9 Выводы
- •1.10 Пример создания класса
- •Конструкторы
- •2.1 Конструкторы
- •2.2 Пример класса без конструктора
- •2.3 Пример класса с конструктором
- •2.4. Конструктор с параметрами по умолчанию
- •2.5. Деструкторы
- •2.6. Пример класса с конструктором и деструктором
- •2.7. Подставляемые или inline функции.
- •2.8. Подставляемые функции-члены.
- •2.9. Указатель this
- •2.10. Использование указателя this
- •Дружественные функции
- •3.1 Дружественные функции
- •3.2 Пример дружественной функции
- •3.3 Дружественные классы
- •3.4. Уточнение имени элемента.
- •3.5. Определение переменных непосредственно перед использованием
- •3.6. Статические элементы класса.
- •2.7. Пример
- •Перегруженные функции
- •4. Перегрузка функций и операций
- •4.1 Полиморфизм
- •4.2 Перегруженные функции
- •4.3 Перегрузка конструктора
- •4.4 Выбор экземпляра функции
- •4.5 Перегрузка стандартных операций
- •4.6 Перегрузка операций сложения и присваивания
- •4.7 Перегрузка операций ++ и --
- •4.8 Дружественные функции-операции
- •4.9 Перегрузка операции индексации []
- •4.10 Аргументы по умолчанию
- •5. Работа с объектами
- •5.1 Ссылки в С++
- •5.2 Передача объектов, как аргументов функции
- •5.3 Массивы объектов
- •5.4 Указатель на объект
- •5.5 Динамическое выделение памяти. Операторы new, delete.
- •5.6 Локальные классы
- •5.7 Вложенные классы
- •5.8 Имена заголовочных файлов в С++
- •5.9 Строковые переменные в С++.
- •6. Наследование
- •6.1 Понятие наследования
- •6.2 Базовые и производные классы
- •6.3 Одиночное и множественное наследование
- •6.4 Управление доступом производных классов
- •6.5 Пример
- •6.6 Конструкторы с параметрами при наследовании
- •6.7 Конструкторы при множественном наследовании
- •7. Виртуальные функции. абстрактные классы
- •7.1 Указатели на производные типы
- •7.2 Виртуальные функции
- •7.3 Пример
- •7.4 Чистые виртуальные функции и абстрактные типы
- •7.5 Виртуальные базовые классы
- •7.6 Шаблоны
- •7.7 Шаблоны функций
- •7.8 Пример
- •7.9 Использование шаблонов с двумя типами параметров
- •7.10 Шаблоны классов
day=a; month=b; year=c;
}
Имя date::print называется полным или квалифицированным именем функции–члена класса. Чтобы вызвать функцию–член класса необходимо использовать имя объекта и операцию (.).
dat1. print ();
dat2. set (2, 2, 2002);
Следует помнить, что dat1 и dat2 – два разных объекта одного класса, при этом элементы, т.е. данные этих объектов занимают в памяти разное место, однако, функции членов класса – общие, потому что функция–член класса может вызывать другую функцию–член того же класса или использовать элементы (данные класса) непосредственно. Точка используется только тогда, когда функция–член вызывается извне класса.
На практике объявление класса (создание шаблона) и описание функций–членов, как правило, осуществляется до main, так как не требует выделения памяти.
Выводы. Примеры
1.9 Выводы
1. Класс – это не объектные переменные, а типы (шаблоны) для создания объектов.
Общий вид шаблона класса:
class Cl_name {
private:
int n;
protected:
…
public:
void print (void));
};
1.При описании класса используются прототипы функции–члена класса.
2.Определение функции–члена класса осуществляется при помощи операции принадлежности :: , которая определяет, к какому классу относится эта функция. void Cl_name:: print (void) { …}
3. После описания класса можно объявить несколько объектов класса в качестве экземпляра этого класса.
Cl_name Obj1,Obj2;
5. Для доступа к элементам класса можно использовать три способа указания имени объекта:
1. Указание полного (квалифицированного) имени функции:
Obj1.Cl_name::print();
2. Непосредственное указание имени объекта и (.):
Obj1.print();
Второй вариант записи возможен в случае однозначности определения принадлежности функции print к классу Cl_name.
Если имеются функции–члены с одинаковыми именами, определённые в разных классах, необходимо использовать полное (квалифицированное) имя функции–члена класса.
3. Через указатель
Cl_name *s;
*s = &Obj1;
s->print();
1.10 Пример создания класса
Пример: создать класс, реализующий сумму двух целых чисел
/*Создать класс, реализующий сумму
двух целых чисел */
#include <iostream>
using namespace std;
class sum
{
int x,y,z;
public: void get_xy (int x1, int y1);
void summa (void);
};
void sum :: get_xy (int x1, int y1)
{x=x1;
y=y1;}
void sum :: summa (void) {z= x+y; cout<<"Сумма:"<<z;}
int main(int argc, char** argv) { int x2, y2;
sum z;
cout<<"Введите первое слагаемое: \n"; cin>>x2;
cout<<"Введите второе слагаемое: \n"; cin>>y2;
z.get_xy(x2,y2); z.summa(); return 0;
}