C++ Программирование в среде С++ Builder 5



   There you can see great milf blowjob movies            

Разное - часть 2


for (int i=0; i<size; i++)

delete [ ] arr[i];

delete [ ] arr;

}

А вот главная функция, тестирующая шаблон для “стандартного” типа int и для “специального” типа строк (т. е. char*):

int main(void)

{

// Создание, заполнениеи вывод MyArray<int>.

MyArray<int> *iArr;

iArr = new MyArray<int>;

int i;

for (i=0; i<DefSize; i++) iArr->Insert (i);

cout << "Integers: ";

for (i=0; KDefSize; i++)

cout << " " << iArr->Get(i);

cout<< end1<< end1;

delete iArr; // Уничтожение объекта.

// Создание, заполнение и вывод MyArray<char*>.

MyArray<char*> *sArr;

sArr = new MyArray<char*>;

for (i=0; KDefSize; i++) sArr->Insert("String!");

cout << "Strings: ";

for (i=0; KDefSize; i++)

cout << " " << sArr->Get(i) ;

cout << end1;

delete sArr; // Уничтожение объекта.

return 0;

}

Полная специализация шаблона

Можно также полностью переопределить шаблон класса для какого-то конкретного типа аргумента. Это значит, что после определения общего шаблона нужно определить специализированный шаблон класса и предусмотреть переопределения всех его элементов-функций и статических элементов данных. Ниже приводится вариант предыдущего примера, использующий такую методику:

#include <iostream.h>

#include <string.h>

const int DefSize = 4;

// Общий шаблон:

template <class T> class MyArray { protected:

int size;

int current;

T *arr;

public:

MyArray(int n = DefSize) { size = n;

current = 0;

arr = new T[size];

}

~MyArray() { delete[] arr; }

void Insert(const T &item) {

if (current == size) return;

arr[current++] = item;

}

T &Get(int idx) { return arr[idx]; } } ;

// Специализированный шаблон для char*:

class MyArray<char*> { protected:

int size;

int current; char **arr;

public:

MyArray(int n = DefSize) { size = n;

current = 0;

arr = new char*[size];

} ~MyArray() ;

void Insert(char* const &item) { if (current == size) return;




Содержание  Назад  Вперед