Программирование >>  Расширенная версия языка c++ 

1 ... 36 37 38 [ 39 ] 40 41 42 ... 227


delete p; освобождение памяти

return

Как и следовало ожидать, программа выводит на экран число 9, являющееся начальным значением переменной, на которую указывает указатель р.

2. Следующая программа инициализирует динамически размещаемый объект:

Динамическое выделение памяти объектам #include <iostreain> using namespace std;

class samp {

int i, j; public:

samp(int a, int b) { i = a; j = b; } in roduct() { return ; }

J ?

..; . l.У:.. :;(

int main (} (

samp *p;

p = ne 6, 5); размещение объекта с инициализацией Ifdp) (

cou Обка выделения памяти\п ; return 1;

cou Итог равен; p->get product () \n ;

delete p; return 0;

i :

При размещении объекта samp автоматически вызывается его конструктор, и объекту передаются значения 6 и 5,

3. В следующей программе размещается массив целых:

Простой пример использования операторов new и delete #include <iostream> using namespace std;

int main () (

int *p;

p = new in [5]; выделение памяти для 5 целых



124 . . Самоучтель C++

II Убедитесь, что память выделена - -

iff!p) !

cout << Ошибка выделения памятиХп ; return 1;

int i;

for(i=0; i<5; p[i] i;

for(i=0; i<5; {

cout Это целое, на которое укзйщает р[ << i ]j ; cout pli] \п ;

delete [] p; освобождение памяти return 0;

программа

выводит на экран следующее:

целое,

которое

указывает

Pluj :

целое,

которое

указывает

р[11 :

целое,

которое

указывает

р[2] :

целое,

которое

указывает

р[3] ;

целое,

которое

указывает

р[4] :

4. В следующей программе создается динамический массив объектов:

Динамическое выделение памяти для массива объектов #include I < reani>

using namespace std;

class samp (

int i, j ; public:

voi j (int a, int b) f i = a; j = b; }

int { return }

); -

samp int i ;

p = new sam 01 ; размещение массива объектов

cou << Ошибка выделения паь1яти\п ;

return 1;



for(i=0; i<10;

p[i] .set ij(i, i) ; i

fordO; i<10; {

cou Содержо г i 1 равно: ; cout p[i] .get product ( } \n ;

delete [] p; return 0;

Эта программа выводит на экран следующее:

Содержое

равно;

Содержое

равно:

Содержое

равно:

Содержое

равно:

Содержое

равно:

Содержое

равно:

Содержое

равно:

Содержое

равно:

Содержое

равно:

Содержое

i у]

равно:

5. В новой версии предыщей программы в нее вводится деструктор samp и теперь при освобождении памяти, обозначенной указателем р, для каждого элемента массива вызывается деструктор:

Динамическое выделение памяти для массива объектов

#include <iostream> *

using namespace std;

class samp { int i, j ;

public:

void set ij (int a, int b) { i = a; j b; } .

~samp() { cou Удаление та ... \n ; } in duct ( ) { return i*j; }

}; :

f . , . .

samp int i;

p = new sam dO]; размещение массива объектов if(!p) (

cou << Ошибка выделения памяти\п ; return 1;



1 ... 36 37 38 [ 39 ] 40 41 42 ... 227

© 2006 - 2024 pmbk.ru. Генерация страницы: 0.001
При копировании материалов приветствуются ссылки.
Яндекс.Метрика