ВУЗ:
Составители:
Рубрика:
21
Base(); // конструктор по умолчанию
Base(const Base&); // конструктор копирования
virtual ~Base(); // виртуальный деструктор
virtual void Show()=0; // чистая виртуальная функция
// другие чистые виртуальные функции
protected: // защищенные члены класса
private:
// часто остается пустым, иначе будет мешать будущим разработкам
};
class Derived: virtual public Base{
public:
Derived(); // конструктор по умолчанию
Derived(const Derived&); // конструктор копирования
Derived(параметры); // конструктор с параметрами
virtual ~Derived(); // виртуальный деструктор
void Show(); // переопределенная виртуальная функ-
ция
// другие переопределенные виртуальные функции
// другие перегруженные операции
protected:
// используется вместо private, если ожидается наследование
private:
// используется для деталей реализации
};
Объект абстрактного класса не может быть формальным параметром
функции, однако формальным параметром может быть указатель на абст-
рактный класс. В этом случае появляется возможность передавать в вызы-
ваемую функцию в качестве фактического параметра значение указателя
на производный объект, заменяя им указатель на абстрактный базовый
класс. Таким образом мы получаем полиморфные объекты.
Абстрактный метод может рассматриваться как обобщение переоп-
ределения. В обоих случаях поведение родительского класса изменяется
для потомка. Для абстрактного метода, однако, поведение просто не опре-
делено. Любое поведение задается в производном классе.
Одно из преимуществ абстрактного метода является чисто концепту-
альным: программист может мысленно наделить нужным действием абст-
ракцию сколь угодно высокого уровня. Например, для геометрических фи-
гур мы можем определить метод Draw, который их рисует: треугольник
TTriangle, окружность TCircle, квадрат TSquare. Мы определим аналогич-
ный метод и для абстрактного родительского класса TGraphObject. Однако
такой метод не может выполнять полезную работу, поскольку в классе
Страницы
- « первая
- ‹ предыдущая
- …
- 17
- 18
- 19
- 20
- 21
- …
- следующая ›
- последняя »