Составители:
Рубрика:
78
ределить в программе объекты, реально к предметной области не
имеющие никакого отношения. Для того, чтобы предотвратить возмож-
ность использования объектов таких классов в программе, их объявляют
абстрактными. Абстрактным называется класс, в котором определена
хотя бы одна чистая виртуальная функция. Чистая виртуальная функция
определяется следующим образом:
virtual тип имя_функции( список_формальных
_параметров )=0;
Чистая виртуальная функция не имеет реализации, ее нельзя вы-
звать в программе, она служит лишь как основа для дальнейшего поли-
морфного переопределения в производном классе. Соответственно, аб-
страктный класс не может иметь объектов, так как в нем не определены
операции над объектами (или, по крайней мере, хотя бы
одна операция,
реализуемая чистой виртуальной функцией).
Рассмотрим пример.
//Листинг 32. Использование абстрактных классов
#include <stdio.h>
#include <iostream.h>
#include <string.h>
#include <conio.h>
class File //абстрактный класс
{ protected:
char **str; //адрес буфера для временного хранения информации из файла
char Name[30]; //имя файла
int n; //количество строк в буфере
virtual int ReadFile()=0; //чистая виртуальная функция чтения информации из файла в буфер
public:
File(char*,int);
~File();
void display(); //метод, отображающий содержимое буфера на экране
};
File::File(char * FileName,int k) //конструктор
{ strcpy(Name,FileName);
n=k;
str=new char*[n]; //выделяем память под буфер
for(int i=0;i<n;i++)
str[i]=new char[80];
}
File::~File() //деструктор
ределить в программе объекты, реально к предметной области не
имеющие никакого отношения. Для того, чтобы предотвратить возмож-
ность использования объектов таких классов в программе, их объявляют
абстрактными. Абстрактным называется класс, в котором определена
хотя бы одна чистая виртуальная функция. Чистая виртуальная функция
определяется следующим образом:
virtual тип имя_функции( список_формальных_параметров )=0;
Чистая виртуальная функция не имеет реализации, ее нельзя вы-
звать в программе, она служит лишь как основа для дальнейшего поли-
морфного переопределения в производном классе. Соответственно, аб-
страктный класс не может иметь объектов, так как в нем не определены
операции над объектами (или, по крайней мере, хотя бы одна операция,
реализуемая чистой виртуальной функцией).
Рассмотрим пример.
//Листинг 32. Использование абстрактных классов
#include
#include
#include
#include
class File //абстрактный класс
{ protected:
char **str; //адрес буфера для временного хранения информации из файла
char Name[30]; //имя файла
int n; //количество строк в буфере
virtual int ReadFile()=0; //чистая виртуальная функция чтения информации из файла в буфер
public:
File(char*,int);
~File();
void display(); //метод, отображающий содержимое буфера на экране
};
File::File(char * FileName,int k) //конструктор
{ strcpy(Name,FileName);
n=k;
str=new char*[n]; //выделяем память под буфер
for(int i=0;i Страницы
- « первая
- ‹ предыдущая
- …
- 76
- 77
- 78
- 79
- 80
- …
- следующая ›
- последняя »
