Klass v c++ Tumanova.pptx
- Количество слайдов: 17
Классы в С++ Выполнил Студент группы 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; /* Элемент данных(поле класса)*/ void show_member(int); /* Функция-элемент (метод класса)*/ }; В заголовке вместо ключевого слово struct стоит class.
Области видимости 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 Доступен вне класса Данные или функции
Спецификатор доступа public Данный спецификатор по умолчанию используется в структурах. Чтобы использовать его в классах, нужно объявлять его явно. Спецификатор public позволяет переменным/объектам, созданным на основе данной структуры/класса, получить доступ к полям. class soldier { public: int x, y; }; soldier a; a. x = 3; cout << a. x << "n"; В данном случае использование классов ничем не отличается от структур.
Спецификатор доступа 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 { 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, "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 employee { public: employee(char *, long, float); … }; // Конструктор не возвращает никакого значения, хотя он не объявляется как void.
Конструктор В программе конструктор определяется так же, как любой другой метод класса: … 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("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: : ~employee(void) { cout << "Уничтожение объекта для " << name << endl; }


