Студопедия.Орг Главная | Случайная страница | Контакты | Мы поможем в написании вашей работы!  
 

Пустая и чистая виртуальные функции. Абстрактный класс



Реально в конкретных задачах вызываются лишь функции производных классов. “Исходная” виртуальная функция базового класса часто нужна только для того, чтобы в производных классах было, что замещать.

Содержимое базовой функции в этом случае не имеет значения и может быть пустым.

class A {

public:

virtual void Func () { }

};

Это удобно если функция ничего не возвращает. Необходимо, чтобы все замещающие функции, а также базовая функция, имели и имя, и сигнатуру, и тип возвращаемого результата одинаковыми.

Если функции должны, что-либо возвращать, то базовая функция уже не может быть пустой. Она может возвращать произвольное значение, напр., 0:

virtual int Func () { return 0;}

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

virtual int Func (int, char*) =0;

Это абстракция и такую функцию обязательно надо замещать в производных класса, в которых она и наполнится разумным содержанием.

Объявление такой функции в базовом классе носит формальный характер для указания на виртуальность функций с данным именем.

Класс, в котором есть хоть одна чистая виртуальная функция, называется абстрактным классом.

Свойства абстрактного класса:

- Невозможно создать самостоятельных объектов абстрактного класса.

- Абстрактный класс может использоваться только в качестве базового класса для производных классов.

- Если в производном классе от абстрактного базового класса происходит замещение чистой виртуальной функции, то производный класс не является абстрактным.

Если замещение не производится, то производный класс также является абстрактным.

Class A { // абстрактный класс

public:

virtual int Func (char*) =0;





Дата публикования: 2014-11-28; Прочитано: 484 | Нарушение авторского права страницы | Мы поможем в написании вашей работы!



studopedia.org - Студопедия.Орг - 2014-2024 год. Студопедия не является автором материалов, которые размещены. Но предоставляет возможность бесплатного использования (0.005 с)...