Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

[ООП] Лекция 1

.pdf
Скачиваний:
13
Добавлен:
21.03.2016
Размер:
359.16 Кб
Скачать

Конструктор

Метод предназначенный для инициализации объекта, выполняющийся автоматически в момент его создания.

Свойства:

1.Имя, совпадает с именем класса.

2.Не возвращает значение.

3.Может быть несколько перегруженных конструкторов с разными параметрами.

4.По умолчанию – не имеет параметров.

Создается автоматически.

5.Может иметь параметры со значениями по умолчанию.

Пример конструктора

class _time

{ int h,m; public:

_time ( int hours = 0, int minutes = 0)

{ h = hours; m = minutes; }

}

int main()

{ _time t(12,30), p=12; return 0;

}

Деструктор

Специальный метод класса, служащий для деинициализации объекта (например освобождения памяти)

class student

{ char *fam,*name; int age;

public:

~student() { delete [] name; delete [] fam;}

};

Список инициализации

Служит для инициализации полей в конструкторе. Список позволяет инициализировать константные поля и поля-ссылки

class _time { int h,m; public:

_time ( int hours = 0, int minutes = 0) : h( hours ), m ( minutes ) { }

};

Понятие ссылки

Ссылка — это простой ссылочный тип, менее мощный, но более безопасный, чем указатель, унаследованный от языка Си.

Важно отличать ссылки от оператора взятия адреса & (address of). Оператор взятия адреса используется для уже созданного объекта с целью получить его адрес (то есть адрес области памяти, где хранятся значения), а ссылка это только задание альтернативного имени объекта (с точки зрения программиста, а не реализации)

Отличие от указателей

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

В качестве результата первого указания не могут быть выполнены никакие арифметические вычисления, приведения типов, взятия адреса и т.п.

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

Ссылки не могут быть null (т.е.указывать в никуда), тогда как указатели - могут; каждая ссылка ссылается на некий объект, вне зависимости от его корректности.

Ссылки не могут быть неинициализированными. Так как невозможно переинициализировать ссылку, она должна быть инициализирована сразу после создания. В частности, локальные и глобальные переменные должны быть проинициализированы там же, где они определены, а ссылки, которые являются данными-членами сущностей класса, должны быть инициализированы в списке инициализатора конструктора класса.

Спасибо за внимание!