Чистые виртуальные функции и абстрактные классы

Виртуальная функция, не имеющая определения тела, называется чистой (риге) и объявляется следующим образом:

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; просмотров: 678;


Поиск по сайту:

При помощи поиска вы сможете найти нужную вам информацию.

Поделитесь с друзьями:

Если вам перенёс пользу информационный материал, или помог в учебе – поделитесь этим сайтом с друзьями и знакомыми.
helpiks.org - Хелпикс.Орг - 2014-2024 год. Материал сайта представляется для ознакомительного и учебного использования. | Поддержка
Генерация страницы за: 0.006 сек.