Скачать презентацию
Идет загрузка презентации. Пожалуйста, подождите
Презентация была опубликована 9 лет назад пользователемАлина Шиферова
1 Лекция 8. Введение в ООП. Часть 1 Красс Александр СПбГУ ИТМО, 2008
2 2 Темы Объявление классов Модификаторы доступа Конструкторы Деструкторы
3 3 Объявление класса struct | class Имя { [модификатор доступа] Члены класса [модификатор доступа] Члены класса };
4 4 Пример. Класс Rectangle int side = 100; Rectangle rect(side); int x = 5, y = 256; rect.draw(x, y);
5 5 Пример. Класс Rectangle struct Rectangle { int side_; void draw(int x, int y) const; Rectangle(int side); }; Rectangle::Rectangle(int side) { side_= side; }
6 6 Пример. Класс Rectangle int side = 100; Rectangle rect(side); int x = 5, y = 256; rect.draw(x, y);... rect.side_ = 0;// Нехорошо такое // разрешать // из-за нижней... // строчки! rect.draw(x + side, y + side);
7 7 Пример. Класс Rectangle struct Rectangle { void draw(int x, int y); Rectangle(int side); private: int side_; }; Rectangle::Rectangle(int side) { side_= side; }
8 8 Модификаторы доступа public – доступ открыт всем protected – доступ открыт классам, производным от данного private – доступ открыт самому классу (т.е. методам данного класса) и друзьям (friend) данного класса (как функциям, так и классам)
9 9 Модификаторы доступа Модификатор доступа относится ко всем перечисленным после него членам до следующего модификатора доступа.
10 10 Пример. Модификаторы доступа class Example { public: int a_, b_; // Для всех double c_; protected: void f(); // Только int d_; // для себя и // наследников private: const char* TellSecret(int reward) const; // Только int secretPrise; // для себя };
11 11 Пример. Модификаторы доступа struct Example { public: int a_, b_; // Для всех double c_; protected: void f(); // Только int d_; // для себя и // наследников private: const char* TellSecret(int reward) const; // Только int secretPrise; // для себя };
12 12 Разница между struct и class struct A { int a_; void f(); }; class A { public: int a_; void f(); } Оба объявления класса A идентичны.
13 13 Разница между struct и class Если модификатор доступа не указан, то в struct будет подразумеваться, что он public, а в class, что он private. Обычно struct используется для объявления классов без поведения, т.е. тех чья единственная функция – хранение данных.
14 14 Конструкторы. Начнём с примера class Complex { private: double real_, image_; public: Complex(); Complex(double real, double image);... // Операции по работе с комплексным // числами }; Complex c1, c2(1.0, 1.25);
15 15 Конструкторы class Имя Класса { [модификатор доступа]... Имя Класса(Список Параметров); }
16 16 Конструкторы Конструктор ничего не возвращает. Можно объявить конструктор с любыми параметрами, кроме тех, которые имеют тот же тип, что и сам класс. В классе может быть несколько конструкторов, требующих параметры разных типов. Конструктор без параметров называется конструктором по умолчанию.
17 17 Конструкторы Если в классе не объявлен ни один конструктор, то будет автоматически сгенерирован конструктор по умолчанию (без параметров), который проинициализирует все поля класса значениями по умолчанию. Если в классе есть константы или ссылки, то будет выдана ошибка, т.к. их необходимо инициализировать конкретными значениями.
18 18 Деструктор Деструктор – это метод класса, который вызывается при уничтожении объекта класса.
19 19 Деструктор class A { public: ~A(); } { A object; } // Вызов деструктора A *object = new A; delete a; // Вызов // деструктора A *object = new A; object->~A(); // Вызов // деструктора
20 20 Что можно делать в деструкторе? Освобождать память из под данных, которыми владеет объект через указатели. Освобождать глобальные ресурсы. Сообщать другим объектам о своей скорой кончине.
21 21 Спасибо за внимание Вопросы?
Еще похожие презентации в нашем архиве:
© 2024 MyShared Inc.
All rights reserved.