
[ООП] Лекция 1
.pdfКонструктор
Метод предназначенный для инициализации объекта, выполняющийся автоматически в момент его создания.
Свойства:
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 (т.е.указывать в никуда), тогда как указатели - могут; каждая ссылка ссылается на некий объект, вне зависимости от его корректности.
•Ссылки не могут быть неинициализированными. Так как невозможно переинициализировать ссылку, она должна быть инициализирована сразу после создания. В частности, локальные и глобальные переменные должны быть проинициализированы там же, где они определены, а ссылки, которые являются данными-членами сущностей класса, должны быть инициализированы в списке инициализатора конструктора класса.
Спасибо за внимание!