Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

06 классы 4

.pdf
Скачиваний:
16
Добавлен:
27.03.2015
Размер:
174 Кб
Скачать
☆

06 – 011

// ДВП в стиле С++

p = new T;

//

динамическое

ВП

...

//

освобождение

ВП

delete p;

// ДВП в стиле С

q = (T *) malloc(sizeof(T));

...

free(q);

...

}

06 – 012

Свойства операций ДВП:

1)Недостаток памяти:

•указатель NULL

•выброс "исключения"

2)ДВП с инициализацией:

p = new

тип_объекта(начальное_значение);

06 – 013

3)ДВП для массива:

одномерный массив:

p = new тип_объекта[размер_массива];

delete [] p;

двумерный массив:

p = new тип_объекта[размер1][размер2];

06 – 014

2.15.Статические элементы класса

•Ключевое слово static.

Пример:

 

 

class Worker {

//

имя

char *name;

char *fam;

//

фамилия

//Cтатическое ДЭ – число

//созданных объектов

static int count;

06 – 015

public:

Worker(char *, char *); ~Worker();

char * getName(); char * getFam();

//Cтатическая ФЭ для доступа к

//закрытым ДЭ; возвращает число

//созданных объектов

static int getCount(); };

06 – 016

//Дополнительное определение и

//инициализация статических ДЭ

int Worker::count=0; // Cтатическая ФЭ

int Worker::getCount()

{

return count;

}

06 – 017

Worker::Worker(char *n, char *f)

{

name = new char [strlen(n)+1]; strcpy(name, n);

fam = new char [strlen(f)+1]; strcpy(fam, f);

// Инкремент счетчика сотрудников

++count;

cout << ”Конструктор объекта ”; cout << name << ’ ’<< fam << endl;

}

06 – 018

Worker::~Worker()

{

cout << ”Деструктор объекта ”; cout << name << ’ ’<< fam << endl; delete [] name;

delete [] fam;

// Декремент счетчика сотрудников

––count;

}

06 – 019

char * Worker::getName()

{

return name;

}

char * Worker::getFam()

{

return fam;

}

06 – 020

int main()

{

cout << ”Счетчик перед созданием объектов = ”;

//Вызов статической ФЭ через имя

//класса, т.к. еще нет объектов

cout << Worker::getCount() << endl;

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]