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

Адаптации растений и животных к жизни в горах: Большое значение для жизни организмов в горах имеют степень расчленения, крутизна и экспозиционные различия склонов...

Опора деревянной одностоечной и способы укрепление угловых опор: Опоры ВЛ - конструкции, предназначен­ные для поддерживания проводов на необходимой высоте над землей, водой...

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

2017-06-12 329
Определение виртуальных функций и абстрактных базовых классов. 0.00 из 5.00 0 оценок
Заказать работу

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

Для объявления виртуальной функции используется ключевое слово virtual. Функция-член класса может быть объявлена как виртуальная, если

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

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

Определение того, какой экземпляр виртуальной функции вызывается по выражению вызова функции, зависит от класса объекта, адресуемого указателем или ссылкой, и осуществляется во время выполнения программы. Этот механизм называется динамическим (поздним) связыванием или разрешением типов во время выполнения.

Абстрактные базовые классы

Базовый класс иерархии типа обычно содержит ряд виртуальных функций, которые обеспечивают динамическую типизацию. Часто в самом базовом классе сами виртуальные функции фиктивны и имеют пустое тело. Определенное значение им придается лишь в порожденных классах. Такие функции называются чистыми виртуальными функциями.

Чистая виртуальная функция — это функция-член класса, тело которой не определено.

В базовом классе такая функция записывается следующим образом:

virtual Прототип Функции = 0;

Класс, имеющий по крайней мере одну чистую виртуальную функцию, называется абстрактным классом. Для иерархии типа полезно иметь абстрактный базовый класс. Он содержит общие свойства иерархии типа, но каждый порожденный класс реализует эти свойства по-своему.

4.7. Осуществить реализацию объектно-ориентированного программирования на языке С++.

/В программе объявлен класс простых дробей,

//описана переменная этого класса, выполнена

//обработка переменной

#include <iostream.h>

#include <math.h>

struct Frac{int P; int Q;};

Frac F;

//Объявление класса

class Drob{

Frac A;

public:

void Vvod(void);

int NOD(void);

void Sokr(void);

void Stepen(int N);

void Print(void);

};

//Описания функций — членов класса

void Drob::Vvod(void)

{ сои!«"Числитель?"; cin»A.P;

cout«"Знаменатель?"; cin»A.Q;

}

int Drob::NOD(void)

{ int M,N;

M=abs(A.P); N=A.Q;

while(M!=N)

{ if(M>N)

if(M%N!=0) M=M%N; else M=N;

else if(N%M!=0) N=N%M; else N=M;

}

return M;

}

void Drob::Sokr(void)

{ int X;

X=NOD();

if(A.P!=0)

{ A.P=A.P/X; A.Q=A.Q/X;}

else A.Q=1;

}

void Drob::Stepen(int N)

{ int i;

F.P=F.Q=1;

for(i=l;i<=N;i++)

{ F.P*=A.P; F.Q*=A.Q;}

}

void Drob::Print(void)

{ cout«"\n"«A.P«"/"«A.Q«"\n"; }

//Основная функция

void main(void)

{ Drob Y; //Объявление объекта

cout«"Вводите дробь! "<<"\n";

Y.VvodO;

Y.Sokr ();

cout«"flpo6b после сокращения:"<<"\n";

Y. P r i n t ();

Y.Stepen(2);

cout<<"flpo6b, возведенная в

квадрат:"<<"\п";

c o u t «F. P «" / " «F. Q «" \ n ";

Данная программа наглядно показывает пример реализации объектно-ориентированного программирования на языке С++.

Проведение компилирования программы и

Сборки исполняемого модуля.

Компилятор — программа, выполняющая компиляцию. На данный момент среди начинающих наиболее популярными компиляторами C/C++ являются GNU g++ (и его порты под различные ОС) и MS Visual Studio C++ различных версий.

При компилировании программы проверяется правильность ее написания. При ошибках в коде или при работе неправильно написанной программы будут выдаваться сообщения об ошибках. Согласно справочному руководству ошибки бывают четырех видов:

1. "ОШИБКА СИНТАКСИСА" (SYNTAX ERROR)

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

2. "НЕСООТВЕТСТВИЕ ПАРАМЕТРОВ" (PARAMETER MISMATCH)

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

3. "ПРЕДУПРЕЖДЕНИЕ РЕЖИМА ВЫПОЛНЕНИЯ" (RUNTIME WARNING)

Предупреждения выводятся с целью предотвращения ошибок, но не всегда требуют какого-либо внимания.

4. "ОШИБКА РЕЖИМА ВЫПОЛНЕНИЯ" (RUNTIME ERROR)

Такая ошибка возникает во время работы программы. Она приводит к невозможности ее дальнейшей работы и к закрытию приложения.

 


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

Биохимия спиртового брожения: Основу технологии получения пива составляет спиртовое брожение, - при котором сахар превращается...

Общие условия выбора системы дренажа: Система дренажа выбирается в зависимости от характера защищаемого...

Организация стока поверхностных вод: Наибольшее количество влаги на земном шаре испаряется с поверхности морей и океанов (88‰)...

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



© cyberpedia.su 2017-2024 - Не является автором материалов. Исключительное право сохранено за автором текста.
Если вы не хотите, чтобы данный материал был у нас на сайте, перейдите по ссылке: Нарушение авторских прав. Мы поможем в написании вашей работы!

0.013 с.