Презентация по ООП
.pdfПерегрузка операций
Пример
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 |