Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Titulnyy_list_otcheta_C++.doc
Скачиваний:
0
Добавлен:
01.03.2025
Размер:
306.18 Кб
Скачать

8.1 Конкретизация функции

Конкретизация

Template

<class T>

swap1(T& x, T& y)

// lab5_funk.cpp: конкретизация функции

#include "stdafx.h"

#include <iostream>

#include <locale>

using namespace std;

template <class T>

void swap1 (T& x, T& y) { \\конкретизация ф-и

T temp;

temp = x;

x = y;

y = temp;

}

class A {

int a;

double z;

public:

A() { a = 0; }

A(int a, double d): a(a),z(z) {}

int getA() { return a; }

double getZ() { return z; }

};

int _tmain(int argc, _TCHAR* argv[])

{

setlocale (LC_ALL,"Russian");

A a(5, 1.5);// создаётся экземпляр класса со значениями переменных

A b(7, 3.33);// тоже самое, только другой объект

swap1(a, b);//ф-я обменивается переменными(этот случай)

cout << a.getA() << endl;

cout << a.getZ() << endl;

cout << b.getA() << endl;

cout << b.getZ() << endl;

return 0;

}

8.2 Конкретизация класса

Конкретизация

// lab5_class.cpp: Конкретизация класса

#include "stdafx.h"

using namespace std;

template <class T>

class D{

T z;//произвольный тип Т переменной z

public:

D() {}

void swap(T &x) {

T temp;// переменная temp является объектом класса Е(этот случай)

temp = z;

z = x;

x = temp;

}

T* getZ() { return &z; }

};

class E {

int e;

public:

E(): e(0) {}

E(int e): e(e) {}

int getI() { return e; }

};

int _tmain(int argc, _TCHAR* argv[])

{

setlocale (LC_ALL,"Russian");

D <E> a; // тип Т , тип класса Е

E e(7);

a.swap(e);

cout << a.getZ()->getI() << endl;

cout << e.getI() << endl;

return 0;

}

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]