Чистые виртуальные функции и абстрактные классы
Виртуальная функция, не имеющая определения тела, называется чистой (риге) и объявляется следующим образом:
virtual тип имя(параметры) = 0;
Предполагается, что данная функция будет реализована в классах−наследниках.
Класс, в котором есть хоть одна чистая виртуальная функция, называется абстрактным классом. Объекты абстрактного класса создавать запрещено. И при передаче параметра в функцию невозможно передать объект абстрактного класса по значению. Однако указатели (и ссылки) определять можно.
При наследовании абстрактность сохраняется: если класс−наследник не реализует унаследованную чистую виртуальную функцию, то он тоже является абстрактным. В C++ абстрактный класс определяет понятие интерфейса. Наследование от абстрактного класса — это наследование интерфейса.
Пример_1:
#include <iostream.h>
#include <conio.h>
Class A
{
protected:
int x;/* к этим данным имеют доступ только методы данного класса и производных*/
Int y;
public:
Int a;
Int b;
int f1(int x,int y)/* метод класса*/
{
Return (x-y);
}
};
class B:A //это объявляется класс, производный от А, при этом наследуются члены классы А
{
public:
int f2(int x)/* метод класса*/
{
/*Здесь могут использоваться члены-данные базового
Класса из секции protected.
Так как имя аргумента метода f2() совпадает с именем
Дата добавления: 2015-07-30; просмотров: 725;