Алгоритмы и структуры данных на С++. Аксёнова Е.А - 41 стр.

UptoLike

3.6. Шаблоны 41
Второй способ
Реализуем перегрузку операции сложения с помощью функции с
двумя параметрами, которая не является членом класса.
class complex
{
public:
int real, image;
complex(int r=0, int i=0) { real=r; image=i; }
};
complex operator+(complex c1, complex c2)
{
return complex(c1.real+c2.real, c1.image + c2.image);
}
int main()
{
complex c1(1,0), c2(1), c3;
c3=c2+c1; //эквивалентно c3=operator+(c1,c2);
printf("re=%d im=%d", c3.real, c3.image);
}
3.6. Шаблоны
Шаблон класса (template) определяет данные и операции потен-
циально неограниченного множества типов. Например, единый шаб-
лон класса list может обеспечить общее описание для списков разных
типов int, float, char и т. д. В качестве примера использования шаб-
лонов рассмотрим реализацию последовательного стека с помощью
параметризованного класса. Далее в ряде программ эта реализация
будет использоваться.
template<class telem> class stack
{
telem *x; // массив для хранения элементов стека
int top; // указатель на вершину стека
int n; // размер выделенного для стека массива
3.6.   Шаблоны                                                   41


   Второй способ
   Реализуем перегрузку операции сложения с помощью функции с
двумя параметрами, которая не является членом класса.

class complex
 {
   public:
         int real, image;

   complex(int r=0, int i=0) { real=r; image=i; }
 };

complex operator+(complex c1, complex c2)
 {
    return complex(c1.real+c2.real, c1.image + c2.image);
 }

int main()
 {
   complex c1(1,0), c2(1), c3;
   c3=c2+c1;           //эквивалентно c3=operator+(c1,c2);
   printf("re=%d im=%d", c3.real, c3.image);
 }

                        3.6. Шаблоны

   Шаблон класса (template) определяет данные и операции потен-
циально неограниченного множества типов. Например, единый шаб-
лон класса list может обеспечить общее описание для списков разных
типов int, float, char и т. д. В качестве примера использования шаб-
лонов рассмотрим реализацию последовательного стека с помощью
параметризованного класса. Далее в ряде программ эта реализация
будет использоваться.

template class stack
{
    telem *x;    // массив для хранения элементов стека
    int top;     // указатель на вершину стека
    int n;       // размер выделенного для стека массива