Читать лекция по информатике, вычислительной технике, телекоммуникациям: "Объектное программирование как технология программирования" Страница 18
класса, напримерclass base {}
class a : public base {}
class b : public base {}
class c : a, b {}В классе "c" присутствуют два объекта класса base. Для исключения такого дублирования объект базового класса должен быть
объявлен виртуальнымclass a : virtual public base {}
class b : virtual public base {}
class c : public a, public b {}aA1;
bB1;
cC1;Объект обыкновенного базового класса располагается, как правило, в начале объекта производного класса и имеет фиксированное
смещение. Если же базовый класс является виртуальным, то требуется его динамическое размещение. Тогда в объекте производного
класса на соответствующем месте размещается не объект базового
класса, а ссылка на него, которая устанавливается конструктором.
Для вышеприведенного примера имеемA1B1C1
--a------¬--b-----¬--c---------------¬
¦------¬ ¦------¬¦ --a-------¬¦
+--------+¦ +-------+¦¦ ¦-------¬ ¦
¦¦¦ ¦¦¦¦ +---------+¦ ¦
¦-base--¬---------¬0integer
+--------++--------+..real
+--------++--------+j--dat-------¬
base**¦-------------->-base-----¬¦
+--------+¦L----------¦
base*¦¦
L-----------base
headСтрока заголовка БД
--¬S0
¦-------------->---------¬0-string---¬
L--¦------------------>-base---¬¦
base**+--------+---------->L--------¦
¦--------------¬L---------+--------+¦¦ D0
¦---------¦-dat------¬
+--------+L--->-base---¬¦
base*¦L--------¦
L---------//------------------------------------------------------//Меню классов объектов (типов столбцов)
string S0;
datD0;
timeT0;
integer I0;base*TYPE[] = {
(base*) &S0;
(base*) &D0;
(base*) &T0;
(base*) &I0;
};
//-----------------------------------------------------//Создание структуры БД#define MAXCOL 30
#define MAXREC 1000table::table()
{
inti,j,n;
char ss[80];
names = new char*[MAXCOL];// Таблица адресов имен столбцов
head = new base*[MAXCOL];// Таблица ссылок на объекты
for (nc=0; nc
Похожие работы
Интересная статья: Быстрое написание курсовой работы

(Назад)
(Cкачать работу)