|
Программирование >> Дополнительные возможности наследования
рТуре = new T[slze]; for (Int i = 0; Ksize; i++) pType[i] = 0; конструктор-копировщик template <class T> Array<T>;;Array(const Array &rhs) itsSize = rhs.GetSizeO; pType = new T[ltsSize]; for (int i = 0; KitsSize; 1++) pType[i] = rhs[l]; перегрузка опвратора присваивания (=) template <class T> Array<T>& Array<T>::operator=(const Array &rhs) { if (this == &rhs) return this; delete [] pType; itsSize = rhs.GetSizeO; pType = new T[itsSize]; for (int 1 = 0; KitsSize; i++) pType[i] = rhs[i]; return this; int mainO { bool Stop = false; признак для цикла int offset, value; Array<int> theArray: while (!Stop) { cout Enter an offset (0-9) ; cout and a value, (-1 to stop): ; cin >> offset >> value; if (offset < 0) break; if (offset > 9) cout << Please use values between 0 and 9. \ n continue; 113 114 115 116 117 118 119 theArray[offset] = value; cout << X nHeres the entire array;\ n cout << theArray << endl; return 0;
Heres the entire array; [0] 0 [1] 10 [2] 20 [3] 30 [4] 40 [5] 50 [6] 60 [7] 70 [8] 80 [9] 90 В строке 42 объявляется шаблон функции operator () в качестве друга шаблона класса Array. Поскольку operator<<() реализован в виде функции шаблона, то каждый экземпляр этого типа параметризованного массива будет автоматически иметь функцию operator () для вывода данных соответствующего типа. Выполнение этого оператора начинается в строке 49. Каждый член массива вызывается по очереди. Этот метод работает только в том случае, если функция operator () определена для каждого типа объекта, сохраняемого в массиве. Использование экземпляров шаблона с экземплярами шаблона можно обращаться так же, как с любыми другими типами данных. Их можно передавать в функции как ссылки или как значения и возвращать как результат выполнения функции (тоже как ссылки или как значения). Способы передачи экземпляров шаблона показаны в листинге 19.5. ДиЕШИиг 19.5. Передача в фуикции зкземияяра таВяоиа 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 dinclude <iostream.h> const int DefaultSize = 10; Обычный класс, из объектов которого будет состоять массив class Animal public: конструкторы Animal(int); AnimalO; AnimalO; методы доступа int GetWeightO const { return itsWeight; } void SetWeight(int theWeight) { itsWeight = theWeight; } дружественные операторы friend ostream& operator<< (ostream&, const Animal&); private; int itsWeight; / оператор вывода обьектов типа Animal ostreamS, operator<< (ostream& theStream, const Animal& theAnimal) heStream theAnimal. GetWeightO; return theStream; Animal::Animal(int weight): itsWeight(weight) cout Animal(int)\ n ; Animal: : AnimalO : itsWeight(O) cout Animal0\ n ; Animal: : AnimalO cout << Destroyed an animal...\ n
|
© 2006 - 2025 pmbk.ru. Генерация страницы: 0
При копировании материалов приветствуются ссылки. |