Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
мини конспект по ООП.doc
Скачиваний:
35
Добавлен:
25.03.2015
Размер:
241.66 Кб
Скачать

9. Константный объект? Константный метод?

Константный объект – это объект, значение полей которого изменять запрещено.

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

Константный метод:

– объявляется с ключевым словом constпосле списка параметров;

– не может изменять значения полей класса;

– может вызывать только константные методы;

– может вызываться для любых (не только константных объектов).

Как константные рекомендуется описывать те методы, которые предназначены для получения значений полей.

Например:

class monstr

{

int get_health() const

{

return health;

}

};

const monstr Dead(0, 0); // константный объект

cout<<Dead.get_health();

10. Конструктор. Его назначение и синтаксические конструкции вызова конструктора?

Конструктор – это метод (функция), имя которого совпадает с именем класса.

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

Конструктор вызывается, если в программе встречается какая-либо из следующих синтаксических конструкций (см. пример класс монстр):

    • Параметризованный конструктор:

имя_ класса имя_объекта [(список параметров)];// список параметров

// не должен быть пустым

Например, monstr Super(200, 300), Fedia, Z;

Здесь создаются три объекта. Значения неуказанных параметров устанавливаются по умолчанию, т.е. Fedia() - ошибка.

    • имя класса (список параметров);// создается объект без имени

// (список параметров может быть пустым)

Например, monstr Х=monstr(1000);

Здесь создается безымянный объект со значением параметра health=1000 (значение второго параметра устанавливается по умолчанию). Выделяется память под объект Х, в которую копируется безымянный объект.

    • Такая форма создания объекта возможна в случае, когда для инициализации объекта допускается задать один параметр:

имя_ класса имя_объекта=выражение;// создается объект без имени

// и копируется

Например, monstr Y=500;

Здесь создается безымянный объект со значением параметра health=500 (значение второго параметра устанавливается по умолчанию). Выделяется память под объект Y, в которую копируется безымянный объект.

Параметры конструктора могут иметь любой тип, кроме этого же класса.

11. Конструктор копирования. Общий вид и случаи вызова?

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

Такой конструктор выполняетпоэлементное копирование полей. Если класс содержит указатели или ссылки, скорее всего, это будет неправильно, так как и копия, и оригинал будут указывать на одну и ту же область памяти.

Общий вид конструктора копирования в С++:

имя_класса::имя_класса(constимя_класса&)

{

… // тело конструктора

}

Конструктор копирования вызывается, когда новый объект создается путем копирования существующего:

– при описании нового объекта с инициализацией другим объектом;

– при передаче объекта в функцию по значению;

– при возврате объекта из функции (и при обработке исключений).

Если ни один конструктор копирования не задан в программе, компилятор создает его автоматически.