Программирование >>  Формирование пользовательского контейнера 

1 ... 21 22 23 [ 24 ] 25 26 27 ... 156


passPtr(p); передает указатель int * функции paasPtrO

*ip - 100; присваивает новое значение ip

Теперь использует неявное преобразование в int * passPtr(ip); cout endl;

Создает объект GCPtr, указывающий на массив из элементов типа int. GCPtr<int, 5> iap = new int[5];

Инициализирует динамический массив, for(int i=0; i < 5; i++) iap[i] = i;

Выводит содержимое массива.

cout Contents of iap via. array indexing.\n ; for(int i=0; i < 5; i++) cout iap[i] ; cout \n\n ;

Создает итератор int GCiterator. GCPtr<int>::GCiterator itr;

Теперь использует итератор для доступа к динамически размещенному массиву.

cout Concents of iap via iterator.\n ; for(itr = iap.beginO; itr != iap.endO ; itr++)

cout *itr ; cout \n\n ;

Генерирует и теряет множество объектов, for(int i=0; 1 < 10; i++) ip = new int(i+10);

Теперь вручную собирает мусор с помощью списка для GCPtr<int>. Помните, что указатели типа GCPtr<int, 5>



76 Глава

не будут собраны этим вызовом.

cout Requesting collection on GCPtr<int> list.Xn ; GCPtr<int>::collect();

Теперь использует указатель GCPtr, указывающий на объект типа класса.

GCPtr<MyClass> ob = new MyClass(10, 20);

Выводит значения с помощью перегруженного блока вывода, cout ob points to *ob endl;

Смена объекта, на который указывает ob. ob = new MyClass(11. 21);

cout ob now points to *ob endl;

Вызов функции-члена с помощью указателя GCPtr. cout Sum is : ob->siOT() endl;

Присваивание значения члену класса с помощью указателя GCPtr.. ob->val = 19.21;

cout ob->val: ob->val \n\n ;

cout Now work with pointers to class objects.\n ;

Объявление указателя типа GCPtr на 5-элементный массив объектов типа MyClass. GCPtr<MyClass. 5> v;

Размещение массива. V = new MyClass[5];

Получение итератора MyClass GCiterator. GCPtr<MyClass>::GCiterator mcltr;

Рициализация массива из элементов типа MyClass. for(int i=0; i<5; i++) { v[i] = MyClass(i, 2*i);



II Вывод содержимого массива из элементов MyClass с помощью индексирования.

cout Cycle through array via array indexing.\n ; for(int i=0; i<5; i++) { cout v[i] ;

cout \n\n ;

Вывод содержимого массива из элементов MyClass с помошью итератора.

cout Cycle through array through an iterator.\n ; for(mcItr = v.beginO; mcltr != v.endO; mcltr++) { cout *mcltr ;

cout \n\n ;

Другой способ записи предыдущего цикла.

cout Cycle through array using a while loop.Xn ;

mcltr - v.beginO;

while (mcltr != v.endO) {

cout *mcltr ;

mcltr++;

cout \n\n ;

cout mcltr points to an array that is mcltr.sizeO objects long.Xn ;

Находит количество элементов между двумя итераторами. GCytr<MyClass>: :GCiterator mcltr2 = v.endO-2; mcltr = v.beginO;

cout The difference between mcltr2 and mcltr is

mcltr2 - mcltr; cout \n\n ;

Можно и так обрабатывать в цикле.

cout Dynamically cort5>ute length of array. \n ;

mcltr = V.beginO;

mcltr2 = V.endO;



1 ... 21 22 23 [ 24 ] 25 26 27 ... 156

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