Лекции.Орг


Поиск:




Категории:

Астрономия
Биология
География
Другие языки
Интернет
Информатика
История
Культура
Литература
Логика
Математика
Медицина
Механика
Охрана труда
Педагогика
Политика
Право
Психология
Религия
Риторика
Социология
Спорт
Строительство
Технология
Транспорт
Физика
Философия
Финансы
Химия
Экология
Экономика
Электроника

 

 

 

 


Основные теоретические положения. Определение конструктора и деструктора




 

Определение конструктора и деструктора

Конструктор (constructor) – это компонентная функция, предназначенная для создания объектов типа своего класса. Под созданием понимается инициализация компонентных данных и при необходимости распределения под них свободной памяти с помощью new. Имя конструктора совпадает с именем класса.

Деструктор (destructor) – это компонентная функция, предназначенная для уничтожения объектов типа своего класса. Под уничтожением понимается освобождение свободной памяти с помощью delete. Имя деструктора – это предваряемое символом «~» Имя класса.

 

 

Конструктор по умолчанию

 

Классы с конструктором по умолчанию могут использоваться для объявления массивов.

 

Н а п р и м е р:

type m[10];

 

является объявлением массива из десяти объектов типа type, при этом используется конструктор по умолчанию:

 

type:: type() {…..} // список аргументов пустой

или

type:: type(int i = 0) {……} // все аргументы имеют значения по умолчанию

 

 

Копирующий конструктор

 

Копирующий конструктор предназначен для копирования одного значения типа класса в другое и имеет вид

type:: type (const type & x)

Копирующий конструктор вызывается в следующих случаях:

- если объект типа type инициализируется значением типа type;

- когда параметр типа type передается функции по значению;

- когда функция возвращает значение типа type.

При отсутствии копирующего конструктора эти действия по умолчанию выполняются поэлементно.

 

 

4. Конструктор – функция преобразования типа

 

Конструктор с одним параметром автоматически является функцией преобразования типа параметра к типу класса.

 

Н а п р и м е р:

 

type:: type (int); // преобразует int к type.

 

Использование explicit в начале объявления запрещает такое преобразование.

 

 

Инициализаторы конструктора

 

Класс, содержащий элементы, тип которых требует конструктор, использует инициализаторы – разделенный запятыми список вызовов конструкторов, стоящий после двоеточия. Конструктор вызывается с помощью имени элемента, за которым в круглых скобках следует список аргументов. Элементы инициализируются в порядке объявления их в классе.

 

Н а п р и м е р:

 

type:: type (int t): i(7), j(t) //инициализаторы

{// остальное тело конструктора}

 

Инициализаторы необходимы всегда для нестатических элементов констант или ссылок.

Конструкторы и деструкторы не наследуются. В отличие от деструкторов конструкторы не могут быть виртуальными.

П р и м е р:

 

class vector{

public:

explicit vector (int n = 10); // константа по умолчанию

vector (const vector & v); // копирующая константа

vector (const int a[ ], int n); // конструктор с параметрами

~vector () {delete [ ] p;} // деструктор

-- -- -- --

-- -- -- --

private:

int *p; // базовый адрес массива

int size; // число элементов массива

};

 

Задания

 

Модифицируйте абстрактный тип данных, реализованный по заданию раздела IV, согласно варианту задания (см. раздел III), заменив соответствующие компонентные функции на систему конструкторов и деструктор.

Проверьте работоспособность АТД на тестовом наборе данных.

 

 

Контрольные вопросы

 

1. Каковы особенности синтаксиса и семантики конструкторов и деструкторов?

2. В чем заключаются особенности применения конструкторов по умолчанию?

3. В каких случаях вызывается копирующий конструктор?

4. При каких условиях конструктор может использоваться для преобразования типа?

5. В каких ситуациях необходимы инициализаторы конструктора, синтаксис и семантика их использования?

 

 

Рекомендуемая литература

 

1. Бадд Т. Объектно-ориентированное программирование в действии: Пер. с англ. – СПб.: Питер, 1997. – 464 с.

2. Буч Г. Объектно-ориентированный анализ и проектирование с примерами приложений на С++: Пер. с англ. – 2-е изд. – М.: Изд-во "БИНОМ"; СПб.: Невский диалект, 1999. – 560 с.

3. Подбельский В.В. Язык С++: Учеб. пособие для вузов. – 5-е изд. – М.: Финансы и статистика, 2001.

4. Пол А. Объектно-ориентированное программирование на С++: Пер. с англ. – 2-е изд. – СПб.: Невский диалект; М.: Изд-во "БИНОМ", 1999. – 462 с.

5. Страуструп Б. Язык программирования С++: Пер. с англ. - 3-е изд. – СПб.: Невский диалект: М.: Изд-во "БИНОМ", 1999. - 991 с.

6. Фридман А.Л. Основы объектно-ориентированного программирования на языке С++. – М.: Горячая линия –Телеком, Радио и связь, 1999. – 208 с.

 


 

Содержание

Введение...................................................................................................... 3

Раздел I. Программирование функций........................................... 4

Раздел II. Обработка массивов......................................................... 9

Раздел III. Обработка структурированных типов данных............... 14

Раздел IV. Разработка абстрактных типов данных.......................... 18

Раздел V. Создание и уничтожение объектов класса..................... 22

Рекомендуемая литература................................................................... 25


 


Редактор Н.А. Бачурина

Компьютерная верстка: М.Н. Авдюхова

ЛР № 021316 от 25 декабря 1998 г.

 
 


Сдано в набор 25.12.02 г. Подписано к печати 27.02.03 г.

Тир. 25 экз. Уч.-изд. л. 0,8. Формат 60´84 1/16. Усл. печ. л. 1,63.

Гарнитура Таймс. Зак.

 

Череповецкий государственный университет

162600, г. Череповец, пр. Луначарского, 5





Поделиться с друзьями:


Дата добавления: 2016-07-29; Мы поможем в написании ваших работ!; просмотров: 637 | Нарушение авторских прав


Поиск на сайте:

Лучшие изречения:

Слабые люди всю жизнь стараются быть не хуже других. Сильным во что бы то ни стало нужно стать лучше всех. © Борис Акунин
==> читать все изречения...

2240 - | 2159 -


© 2015-2025 lektsii.org - Контакты - Последнее добавление

Ген: 0.008 с.