Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Учебное пособие 400107.doc
Скачиваний:
5
Добавлен:
30.04.2022
Размер:
568.32 Кб
Скачать

3.2.8. Динамическое создание объектов

Как любые переменные в С++, так и объекты могут создаваться и уничтожаться динамически. Рассмотрим, в качестве примера, простую программу нахождения суммы n элементов массива, где n заранее известно:

#include<iostream.h>

class massiv

{

protected:

int n, //количество элементов в массиве

*ptr; //указатель на начало области памяти для массива

public:

massiv(void);

void summa(void);

~massiv(void);

};

massiv::massiv(void)

{

int i;

cout<<”Ввод n”; //ввод количества элементов в массиве

cin>>n;

ptr=new[n*sizeof(int)]; //выделение памяти для массива

for (i=0; i<n; i++)

{cout<<”Элемент”<<i; cin>>*(ptr+i);}; //ввод элементов массива

};

void massiv::summa(void)

{

int i,sum=0;

for(i=0;i<n;i++)

sum=sum+(*(ptr+i)); //нахождение суммы элементов

cout<<”Сумма=”<<sum; //вывод результата

}

massiv::~massiv()

{delete ptr; } //деструктор, освобождает занятую массивом память

int main()

{

massiv *ptrmas;

ptrmas=new(massiv); //запускает конструктор и создается массив

ptrmas->summa(); //нахождение суммы

ptrmas->~massiv(); //вызов деструктора

return 0;

}

3.2.9. Проверьте свои знания!

В заключение этого раздела приведем целостную программу на языке С++ и рекомендуем читателю самому выяснить, что будет выведено на экран в результате её выполнения. Для проверки – запустите!

#include<stdio.h>

class parent

{

protected:

char version;

public:

Parent()

{version=’A’; }

virtual void print()

{printf(“\n The parent. Version %c”, version);}};

class derived1 :public parent

{

private:

int info;

public:

derived1 (int number)

{info=number; version=’1’}

void print()

{printf(“\nDerived1 info: %d version %c”, info, version);};

}

class derived2 :public parent

{

private:

int info;

public:

derived2(int number)

{info=number;}

void print()

{printf(“\nDerived2 info: %d. Version %c”, info, version);};

}

class derived3 :public derived1

{

private:

int info;

public:

derived3 (int number): (number)

{info=number;

version=’3’;

}

void print()

{printf(“\nDerived3 info: %d. Version %c”, info, version);}

};

void print_info (parent*info_holder)

{info_holder->print(); }

main() {

parent b;

derived1 d1(3);

derived2 d2(15);

derived3 d3(-565);

print_info (&b);

print_info (&d1);

print_info (&d2);

print_info (&d3);

}

Литература:

1

Б.Керниган, Д.Ритчи. Язык программирования Си. - М.: Финансы и статистика, 1992.

2

Белецкий Я. Турбо Си++: Новая разработка. - М.: Машиностроение, 1994. -400с.

3

Бочков С.О., Субботин Д.М. Язык программирования Си для персонального компьютера. -М.: Радио и связь,1990.-384с.

4

Бруно Бабэ. Просто и ясно о BORLAND С++. -М.:БИНОМ,1995.-400с.

5

Д.Кнут. Искусство программирования для ЭВМ. Т.3. Сортировка и поиск. - М.: Мир, 1978.

6

Елманова Н.З., Кошель С.П. Введение в Borland C++ Builder.-М.: Диалог. - МИФИ, 1997.-272с.

7

Калверт Чарльз и др. Borland C++Builder 3.Самоучитель.-К: ДиаСофт, 1999.-272с.

8

Калверт Чарльз. C++Builder. Энциклопедия пользователя.

9

Круглински Дэвид. Основы Visual C++.-М.:Русская Редакция ТОО Channel Trading Ltd, 1997.-696с.

10

Лукас П. С++ под рукой. - Киев:ДиаСофт, 1993.-176с.

11

Московские олимпиады по программированию,М.-1988.-208с.

12

Оузьер Д., Гробман С., Батсон С. Delphi2. Освой самостоятельно.-М.:Восточная Книжная Компания,1997.-624с.

13

Пирогов В.Ю. Программирование на языке ассемблера для операционных систем MS DOS и Windows, 1999, -550c.

14

Рамодин Д. Создание приложений в среде Borland C++Builder, Мир ПК №10,11,12-1997г.

15

Рейсдорф К. Освой самостоятельно Borland C++Builder. М.: БИНОМ, 1998.-702с.

16

Ричард Вайнер, Льюс Пинсон С++ изнутри. - Киев: ДиаСофт,1993.-304с.

17

Стефан Дьюхарст, Кэти Старк Программирование на С++.- Киев: ДиаСофт, 1993.-272с.

18

Страуструп Б. Язык программирования СИ++. - М.: Радио и связь,1991. 352с.

19

Том Сван. Программирование для WINDOWS в BORLAND C++.-М.:БИНОМ, 1995.-400с

20

Уэйт М., Прата С., Мартин Д. Язык Си. Руководство для начинающих. - М.: Мир, 1988.- 512 с.

21

Шилд Г. Программирование на С и С++ для WINDOWS 95.-К.:Торгово- издательское бюро BHV, 1996.-400с.

22

Шилд Герберт. Самоучитель С++.-BHV.-С.-Петербург.,1997.-512с.

23

Шилдт Герберт. MFC: основы программирования. - К.: Издательская группа BHV, 1997.-560с.