Различия
Показаны различия между двумя версиями страницы.
— | konstruktory_i_destruktory [2025/07/06 12:39] (текущий) – создано - внешнее изменение 127.0.0.1 | ||
---|---|---|---|
Строка 1: | Строка 1: | ||
+ | ====== Конструкторы и деструкторы С++ ====== | ||
+ | ====== Конструкторы ====== | ||
+ | Начальная инициализация объектов класса. Иногда во время создания объекта его элементам необходимо присвоить начальные значения. Как вы уже знаете, | ||
+ | Однако, | ||
+ | |||
+ | **Конструктор** (construct - создавать) - это специальная функция-член класса, | ||
+ | |||
+ | < | ||
+ | # include < | ||
+ | using namespace std; | ||
+ | class Test{ | ||
+ | // так как спецификатор доступа не указан | ||
+ | // данная переменная будет по умолчанию закрыта | ||
+ | // для доступа вне класса (private) | ||
+ | int one; | ||
+ | |||
+ | // спецификатор доступа public | ||
+ | // все члены, идущие после него | ||
+ | // будут открыты для доступа извне | ||
+ | public: | ||
+ | Test(){ | ||
+ | one=0; | ||
+ | two=0; | ||
+ | } | ||
+ | |||
+ | // инициализировать переменные в классе | ||
+ | // при создании запрещено, | ||
+ | // метод, реализующий данное действие | ||
+ | void Initial(int o,int t){ | ||
+ | one=o; | ||
+ | two=t; | ||
+ | } | ||
+ | |||
+ | // метод показывающий переменные класса | ||
+ | // на экран | ||
+ | void Show(){ | ||
+ | cout<<" | ||
+ | } | ||
+ | int two; | ||
+ | }; | ||
+ | void main(){ | ||
+ | |||
+ | // создается объект с типом Test | ||
+ | Test obj; // | ||
+ | |||
+ | // показ на экран | ||
+ | obj.Show(); | ||
+ | |||
+ | // вызывается функция, | ||
+ | obj.Initial(2, | ||
+ | |||
+ | // показ на экран | ||
+ | obj.Show(); | ||
+ | |||
+ | // прямая запись в открытую переменную two | ||
+ | // с переменной one такая запись невозможна, | ||
+ | // как доступ к ней закрыт | ||
+ | obj.two=45; | ||
+ | |||
+ | // снова показ на экран | ||
+ | obj.Show(); | ||
+ | |||
+ | } | ||
+ | </ | ||
+ | - Конструктор автоматически вызывается при создании объекта, | ||
+ | - Основное назначение конструкторов - инициализация объектов. | ||
+ | - Конструктор всегда должен иметь спецификатор доступа public!!! | ||
+ | |||
+ | C помощью параметров конструктору можно передать любые данные, | ||
+ | |||
+ | **Пример.** Класс, описывающий точку. | ||
+ | < | ||
+ | # include < | ||
+ | using namespace std; | ||
+ | |||
+ | // описание класса Point | ||
+ | class Point { | ||
+ | int x, y; | ||
+ | // координаты точки, по умолчанию имеют | ||
+ | // уровень доступа private | ||
+ | |||
+ | public: | ||
+ | // конструктор присваивает переменным класса | ||
+ | // значения соответственно x0 и y0 | ||
+ | Point(int x0, int y0) | ||
+ | { | ||
+ | x = x0; | ||
+ | y = y0; | ||
+ | } | ||
+ | |||
+ | |||
+ | // функция вывода координат точки на экран | ||
+ | void ShowPoint() | ||
+ | { | ||
+ | cout << "\nx = " << x; | ||
+ | cout << "\ny = " << y; | ||
+ | } | ||
+ | |||
+ | }; | ||
+ | |||
+ | void main() | ||
+ | { | ||
+ | Point A(1,3); // создаем точку А (объект типа Point) | ||
+ | // с координатами x = 1, y = 3 (вызывается конструктор Point(1, 3) | ||
+ | A.ShowPoint(); | ||
+ | |||
+ | } | ||
+ | </ | ||
+ | |||
+ | < | ||
+ | Еще кое-что о конструкторах... | ||
+ | * Конструктор без параметров называют конструктором по умолчанию. Такой конструктор обычно присваивает переменным-членам класса наиболее часто используемые значения. | ||
+ | < | ||
+ | Point() | ||
+ | { | ||
+ | x = 0; | ||
+ | y = 0; | ||
+ | } | ||
+ | </ | ||
+ | * Для каждого класса может существовать только один конструктор по умолчанию. | ||
+ | * Если для класса не определено никакого конструктора, | ||
+ | |||
+ | ====== Деструкторы ====== | ||
+ | **Деструктор** (destruct - разрушать) выполняет функцию, | ||
+ | Деструктор - это специальная функция класса, | ||
+ | |||
+ | |||
+ | Основные особенности при работе с деструктором. | ||
+ | - Деструктор не принимает никаких параметров и не возвращает никаких значений. | ||
+ | - Класс может иметь только один деструктор. | ||
+ | Пример последовательности, | ||
+ | < | ||
+ | # include < | ||
+ | using namespace std; | ||
+ | |||
+ | // описание класса CreateAndDestroy | ||
+ | class CreateAndDestroy | ||
+ | { | ||
+ | public: | ||
+ | CreateAndDestroy(int value) | ||
+ | { | ||
+ | data = value; | ||
+ | cout << " Object " << data << " constructor\n"; | ||
+ | } | ||
+ | |||
+ | ~CreateAndDestroy() | ||
+ | { | ||
+ | cout << " Object " << data << " destructor\n"; | ||
+ | } | ||
+ | private: | ||
+ | int data; | ||
+ | }; | ||
+ | |||
+ | void main () | ||
+ | { | ||
+ | |||
+ | CreateAndDestroy one(1); | ||
+ | CreateAndDestroy two(2); | ||
+ | |||
+ | } | ||
+ | </ | ||
+ | |||
+ | РЕЗУЛЬТАТ РАБОТЫ ПРОГРАММЫ | ||
+ | |||
+ | Object 1 constructor | ||
+ | Object 2 constructor | ||
+ | Object 2 destructor | ||
+ | Object 1 destructor | ||
+ | |||
+ | |||
+ | |||
+ | Вывод к примеру - деструкторы вызываются в последовательности, |
📌 Удобный подбор VPS по параметрам доступен на DIEGfinder.com - официальном инструменте проекта DIEG. Это часть единой экосистемы, созданной для того, чтобы помочь быстро найти подходящий VPS/VDS сервер для любых задач хостинга.
📌 Для тестирования скриптов, установщиков VPN и Python-ботов рекомендуем использовать надежные VPS на короткий срок. Подробнее о быстрой аренде VPS для экспериментов - читайте здесь.
💥 Подпишись в Телеграм 💥 и задай вопрос по сайтам и хостингам бесплатно!7 Самых Популярных Статей
- Как запустить скрипты и веб-приложения на Python
- Что такое страны TIER 1,2,3
- 7 способов сравнения файлов по содержимому в Windows или Linux
- Установка и тестирование веб-панели HestiaCP
- Nginx простые примеры конфигурации
- top, htop, atop определение загрузки ОС (Load average, LA)
- Использование rsync в примерах
7 Самых Популярных Обзоров
- Хостинг для Python-скриптов и приложений
- ТОП 4 лучших антидетект браузеров (Бесплатные & Платные)
- Подборка купонов (промокоды) на хостинг, антидетект браузеры
- Обзор THE.Hosting (PQ Hosting): надежный хостинг с профессиональной поддержкой
- Хостинг в России
- Хостинг в Европе
- Обзор браузера Dolphin {anty} для мультиаккаунтинга