|
Клас string
// stringC.cpp: Defines the entry point for the console application.
//
#include "stdafx.h"
#include <iostream>
#include <string>
using namespace std;
int _tmain(int argc, _TCHAR* argv[])
{
string s1("qwe"),s2(s1),s3="1223";
cout<<s2;
s3=s1+s2;
if(s3==s1)
cout<<"\nYES\n";
else
cout<<"\nNO\n";
s3=s2.substr(1,1);
cout<<s3;
s2.replace(0,1,"2312342323");
int i=s2.find("23");
cout<<"\ns2="<<s2;
cout<<"\ni="<<i;
i=s2.find_last_of("23");
cout<<"\ni="<<i;
i=s2.find_last_not_of("we");
cout<<"\ni="<<i;
system("pause");
return 0;
}
Призначення шаблонів
Наслідування дозволяє багаторазове використання об’єктного коду, а шаблони – вихідного.
Алгоритм виконання якої-небудь дії можна записувати незалежно від того, якого типу дані обробляються. Найпростішим прикладом служить визначення мінімуму із двох величин. Незалежно від того, до якого саме типу належать змінні a і b, якщо це той самий тип, для якого визначена операція "менше", запис буде та сама. Було б природно визначити функцію min, що повертає мінімум із двох своїх аргументів.
Механізм шаблонів у мові Си++ дозволяє ефективно вирішувати багато подібних завдань.
Функції-Шаблони
Шаблон функції являє собою узагальнене визначення функції, з якого компілятор автоматично створює представник функції для заданого користувачем типу (або типів) даних. Синтаксис:
template <class T[, class T1…><тип поверт. знач.><ім'я функції>([<список параметрів>]);
Викликається шаблонова функція так само, як звичайна.
Запишемо алгоритм пошуку мінімуму двох величин, де в якості параметра використовується тип цих величин.
template<class T>
const T& min(const T& a, const T& b)
{
if (a < b)
return a;
else
return b;
}
Даний запис ще не створив ні однієї функції, це лише шаблон для певної функції. Тільки тоді, коли відбувається звертання до функції з аргументами конкретного типу, буде виконана генерація конкретної функції. У функції-шаблону може бути кілька параметрів.
Шаблони класів
Шаблон класу має вигляд:
template <список параметрів>
class оголошення_класу
Список параметрів класу-шаблону аналогічний списку параметрів функції-шаблону: список класів і змінних, які підставляються в оголошення класу при генерації конкретного класу. Ключове слово template повідомляє компілятор, що в наступнім визначенні класу використовується один або кілька невідомих типів. Усередині класу Т використовується скрізь, де звичайно вказується конкретний тип.
У той момент, коли компілятор генерує код класу на підставі шаблону, ці типи повинні бути відомі, щоб компілятор міг їх поставити на місце параметрів шаблону.
template <class T>
class Tem
{
T i;
public:
Tem(T i):i(i){}
T getT();
};
template<class T>
T Tem<T>::getT(){return i;}
int _tmain(int argc, _TCHAR* argv[])
{
Tem<int> t(6);
cout<<t.getT();
system("pause");
return 0;
}
Дата добавления: 2015-11-04; просмотров: 34 | Нарушение авторских прав
<== предыдущая лекция | | | следующая лекция ==> |
Цель:сформировать навыки работы с приложением What-If & Plan-Fact. | | | Журналистика второй половины 20-х – 30-х гг. |