Читать лекция по информатике, вычислительной технике, телекоммуникациям: "Объектное программирование как технология программирования" Страница 18

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

Функция "чтения" служит для ознакомления с работой. Разметка, таблицы и картинки документа могут отображаться неверно или не в полном объёме!

класса, например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


Интересная статья: Быстрое написание курсовой работы