Реферат: Методы программирования в C++

Чистой виртуальной функцией называется компонентная функция, которая имеет следующее определение:

virtualтип имя_функции (список формальных параметров)=0;


В этой записи конструкция “=0” называется “чистый спецификатор”. Пример описания чистой виртуальной функции:

virtualvoidF()=0;

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

3. Абстрактные классы

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

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

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

Механизм абстрактных классов разработан для представления общих понятий, которые в дальнейшем предполагается конкретизировать. Эти общие понятия обычно невозможно использовать непосредственно, но на их основе можно, как на базе, построить частные производные классы, пригодные для описания конкретных объектов.

Таким образом, механизм абстрактных классов используется при создании сложных иерархий наследования.

В качестве иллюстрации выше сказанного рассмотрим пример для расчета площади треугольника и прямоугольника:

// Создание абстрактного класса

# include <iostream.h>

class area

{doubledim1, dim2; //размеры фигуры

public:

void setarea(double dim1,double dim2)

{dim1=d1;

dim2=d2;

}

void getdim(double &dim1,double &dim2)

{d1=dim1;

d2=dim2;

}

virtual double getarea()=0; //чистаявиртуальнаяфункция

};

class rectangle: public area

{ public:

К-во Просмотров: 488
Бесплатно скачать Реферат: Методы программирования в C++