|
Программирование >> Дополнительные возможности наследования
SO; template <class T> объявление шаблона и параметра 51; class Array параметризованный класс 52; { 53: public: 54: Arraydnt itsSize = DefaultSize); 55; Array(const Array &rhs); 56; ArrayO ( delete [] pType; } 58; Arrayi operator=(const Arrayi); 59: T& operator[](int offSet) { return pType[offSet]; } 60: const T& operator[](int offSet) const 61; { return pType[offSet]; } 62; int GetSizeO const { return itsSize; } 64: функция-друг 65: friend ostreami operator (ostreami, const Array<T>8.); 66: 67; private: 68; T рТуре; 69; int itsSize; 70; } ; 71: 70: template <class T> 72; ostreami operator (ostream& output, const Array<T>& theArray) 73; { 74; for (int i = 0; KtheArray.GetSizeO; i++) 75; output [ i ] theArray[i] endl; 76: return output; 77: } 79: Ряд выполнений , 80: 81; выполнение конструктора 82; template <class Т> 83; Array<T>;;Array(int size): 84: itsSize(si2e) 85; { 86; pType = new T[size]; 87; for (int i = 0; Ksize; i++) 88: pType[i] = 0; 89: } 91; конструктор-копировщик 92: template <class T> 93: Array<T>::Array(const Array &rhs) 94; { 95; itsSize = rhs.GetSizeO; 96; pType = new T[itsSize]; 97; for (int i = 0; KitsSize; i++) 98: pType[i] = rhs[i]; 99: } 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 void IntFillFunction(Array<int>& theArray); void AnimalFillFunction(Array<Aninal>& theArray); int main() { Array<int> intArray; Array<Aninal> aninialArray; IntFill Function(intArray); Animal Fill Function(animalArray); cout intArray,. Л n intArray; cout \ nanimalArray ,\ n animalArray endl; return 0; void IntFlllFunction(Array<int>& theArray) { bool Stop = false; int offset, value; 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) { oout ***Please use values between 0 and 9,**\ n continue; theArray[offset] = value; void AnimalFillFunction(Array<Animal>& theArray) { Animal pAnimal; for (int 1 = 0; KtheArray,GetSizeO; i++) { pAnimal = new Animal; pAnimal->SetWeight(1*100); theArray[i] = *pAnimal; delete pAnimal; копия была помещена в массив
IntArray:... [0] 0 [1] 10 [2] 20 [3] 30 [4] 40 [5] 50 [6] 60 [7] 70 [8] 80 [9] 90 anlmalArray: [0] 0 [1] 100 [2] 200 [3] 300 [4] 400 [5] 500 [6] 600 [7] 700 [8] 800 [9] 900 В целях экономии места большая часть выполнения класса Array не показана в этом листинге. Класс Animal объявляется в строках 6-23. И хотя структура этого класса предельно упрощена, тем не менее в нем содержится собственный оператор вывода ( ), позволяющий выводить на экран объекты массива типа Animal. Обратите внимание, что в классе Animal объявлен конструктор по умолчанию (конструктор без параметров, который еще называют стандартньш). Без этого объявления нельзя обойтись, поскольку при добавлении объекта в массив используется конструктор по умолчанию данного объекта. При этом возникают определенные трудности, о которых речь пойдет ниже. В строке 101 объявляется функция IntFlllFunction(), параметром которой является целочисленный массив. Обратите внимание, что эта функция не принадлежит шаблону, поэтому может принять только массив целочисленных значений. Аналогичным
|
© 2006 - 2025 pmbk.ru. Генерация страницы: 0
При копировании материалов приветствуются ссылки. |