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

Презентация по ООП

.pdf
Скачиваний:
22
Добавлен:
11.06.2015
Размер:
194.84 Кб
Скачать

Перегрузка операций

Пример

class Stroka {

...

const Stroka & operator =(const Stroka & s){ if(&s == this)return *this; if(buf!=NULL)delete buf;

buf=new char[strlen(s.buf)+1]; strcpy(buf,s.buf);

return *this;

}

...

};

Stroka s("qq");

Stroka q=s;

О.А.Мирзеабасов (Кафедра ИС)

ООП

Осень 2014

11 / 14

Наследование

Наследование используется для изменения и расширения функциональности классов.

class имя_класса : [модификатор] базовый_класс { // поля и методы класса };

Модификаторы:

private

protected

public

Базовых классов может быть несколько (множественное наследование).

О.А.Мирзеабасов (Кафедра ИС)

ООП

Осень 2014

12 / 14

Пример наследования

Важно: в объявлении базового класса (в примере выше) следует изменить модификатор доступа к полю buf на protected.

class DStroka : public Stroka { int age;

char *name; public: DStroka(char *str);

DStroka(const DStroka &); ~DStroka();

};

О.А.Мирзеабасов (Кафедра ИС)

ООП

Осень 2014

13 / 14

Пример наследования

(продолжение

DStroka::DStroka(char *str) : Stroka(str){ name=new char[strlen(str)+1]; sscanf(str,"%d%s",&age,name);

}

//В деструкторе класса-наследника не следует вызывать

//деструктор базового класса,

//это будет сделано автоматически DStroka::~DStroka(){

delete name;

}

О.А.Мирзеабасов (Кафедра ИС)

ООП

Осень 2014

14 / 14