- •Факультет прикладной математики и физики
- •Лабораторные работы 1 — 8 по курсу сппо:
- •1.Агрегация по ссылке (lab1.Cpp, lab1.Exe______________)
- •2.Агрегация по значению и вложением (lab1_vlog.Cpp,lab1_znach.Cpp,*.Exe)
- •1.Агрегация по ссылке
- •2.Агрегация по значению
- •2.Агрегация вложением
- •Void md() {
- •Void mf() {
- •Void me() {
- •3.Принцип подстановки
- •Int main()
- •4.1 Наследование: расширение, спецификация, специализация, конструирование(граф изменён)
- •4.2 Наследование: комбинирование(граф изменём)
- •5. Наследование: комбинирование через общих предков
- •Int main()
- •6.1 Ассоциация 1:1
- •Int main()
- •6.2 Ассоциация 1:n
- •7.1 Использование: клиент-сервер
- •7.2 Использование: общность
- •8.1 Конкретизация функции
- •8.2 Конкретизация класса
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;
}
