Скачать презентацию Классы в С Выполнил Студент группы 12 -ИВТ-1 Скачать презентацию Классы в С Выполнил Студент группы 12 -ИВТ-1

Klass v c++ Tumanova.pptx

  • Количество слайдов: 17

Классы в С++ Выполнил Студент группы 12 -ИВТ-1 Туманова Дария Классы в С++ Выполнил Студент группы 12 -ИВТ-1 Туманова Дария

Что такое «классы» ? • Класс – структура, которая объединяет данные и методы (функции), Что такое «классы» ? • Класс – структура, которая объединяет данные и методы (функции), их обрабатывающие. Различие классов и структур struct student { }; char fam [20]; float stip; Int birthyear; Class student { public: char fam[20]; float stip; int birthyear; void show_student(void) Void show_stud(void) { { printf(“%s %f %d”, fam, stip, birthyear); printf(“%s %f %d”, }; student. fam, student. stip, student. birthyear); }; }

Определение класса должно располагаться до main. class employee { int data_member; /* Элемент данных(поле Определение класса должно располагаться до main. class employee { int data_member; /* Элемент данных(поле класса)*/ void show_member(int); /* Функция-элемент (метод класса)*/ }; В заголовке вместо ключевого слово struct стоит class.

Области видимости public и private По умолчанию в структурах используется спецификатор доступа public, а Области видимости public и private По умолчанию в структурах используется спецификатор доступа public, а в классах private. Рассмотрим примеры без спецификаторов: struct soldier class soldier { { int x, y; }; }; Здесь между структурами и классами есть важное различие. Вот как на самом деле выглядят предыдущие определения: struct soldier class soldier { { public: private: int x, y; }; }; Компилятор автоматически вставляет public и private. В структурах по умолчанию используется public, в классах по умолчанию используется private.

Класс private Недоступен вне класса Данные или функции public Доступен вне класса Данные или Класс private Недоступен вне класса Данные или функции public Доступен вне класса Данные или функции

Спецификатор доступа public Данный спецификатор по умолчанию используется в структурах. Чтобы использовать его в Спецификатор доступа public Данный спецификатор по умолчанию используется в структурах. Чтобы использовать его в классах, нужно объявлять его явно. Спецификатор public позволяет переменным/объектам, созданным на основе данной структуры/класса, получить доступ к полям. class soldier { public: int x, y; }; soldier a; a. x = 3; cout << a. x << "n"; В данном случае использование классов ничем не отличается от структур.

Спецификатор доступа private Мы всегда будем объявлять спецификаторы доступа явно: и private и public. Спецификатор доступа private Мы всегда будем объявлять спецификаторы доступа явно: и private и public. class soldier { private: int ammo; public: int x, y; } При выполнении этого примера, компилятор выдаст ошибку. Мы не можем обращаться к полю ammo за пределами класса. soldier a; a. x = 3; a. y = 4; a. ammo = 5; // !!! Данный код некорректен

Функции в классах Объявление функции внутри класса Объявление функции вне класса class employee { Функции в классах Объявление функции внутри класса Объявление функции вне класса class employee { public: char name [64]; long employee_id; float salary; void show_employee(void); }; { cout << "Имя: " << name << endl; cout << "Номер служащего: " << employee_id << endl; cout << "Оклад: " << salary << endl; }; }; void employee: : show_employee(void) { cout << "Имя: " << name << endl; cout << "Номер служащего: " << employee_id << endl; cout << "Оклад: " << salary << endl; };

Создание и работа с объектами класса { employee worker, boss; //создание объектов strcpy(worker. name, Создание и работа с объектами класса { employee worker, boss; //создание объектов strcpy(worker. name, "John Doe"); worker. employee_id = 12345; Работа worker. salary = 25000; с полями strcpy(boss. name, "Happy Jamsa"); объектов boss. employee_id = 101; boss. salary = 101101. 00; worker. show_employee(); Методы класса boss. show_employee(); }

Запомните! • Для определения класса программа должна указать имя класса, элементы данных класса и Запомните! • Для определения класса программа должна указать имя класса, элементы данных класса и функции класса (методы). • Определение класса обеспечивает шаблон, с помощью которого ваши программы могут создать объекты типа этого класса, подобно тому, как программы создают переменные типа int, char и т. д. • Программа присваивает значения элементам данных класса, используя оператор точку. • Программа вызывает функцию-элемент класса, используя оператор точку.

Конструктор представляет собой метод класса, который имеет такое же имя, как и класс. class Конструктор представляет собой метод класса, который имеет такое же имя, как и класс. class employee { public: employee(char *, long, float); … }; // Конструктор не возвращает никакого значения, хотя он не объявляется как void.

Конструктор В программе конструктор определяется так же, как любой другой метод класса: … employee: Конструктор В программе конструктор определяется так же, как любой другой метод класса: … employee: : employee(char *name, long employee_id, float salary) { strcpy(employee: : name, name) ; employee: : employee_id = employee_id; if (salary < 50000. 0) employee: : salary = salary; else // Недопустимый оклад employee: : salary = 0. 0; } …

Конструктор Когда используется конструктор, используется передача ему параметров при объявлении объекта: employee worker( Конструктор Когда используется конструктор, используется передача ему параметров при объявлении объекта: employee worker("Happy Jamsa", 10101. 0); employee secretary("John Doe", 57, 20000. 0); employee manager("Jane Doe", 1022, 30000. 0);

Деструктор Эта функция вызывается при удалении объекта. Имя деструктора совпадает с именем класса, но Деструктор Эта функция вызывается при удалении объекта. Имя деструктора совпадает с именем класса, но с символом ~ в начале. Class myclass { Int a; Public: Myclass(); //конструктор ~myclass(); //деструктор Void show(); };

Деструктор класса вызывается при удалении объекта. Локальные объекты удаляются только тогда , когда они Деструктор класса вызывается при удалении объекта. Локальные объекты удаляются только тогда , когда они выходят из области видимости Глобальные объекты удаляются при завершении программы. Адреса конструктора и деструктора получить невозможно!!!

Деструктор Конструктору можно передавать аргументы. В отличие от конструктора деструктор не может иметь параметров, Деструктор Конструктору можно передавать аргументы. В отличие от конструктора деструктор не может иметь параметров, так как отсутствует механизм передачи аргументов удаленному объекту.

class employee { public: employee(char *, long, float); ~employee(void); … } void employee: : class employee { public: employee(char *, long, float); ~employee(void); … } void employee: : ~employee(void) { cout << "Уничтожение объекта для " << name << endl; }