Студопедия
Случайная страница | ТОМ-1 | ТОМ-2 | ТОМ-3
АрхитектураБиологияГеографияДругоеИностранные языки
ИнформатикаИсторияКультураЛитератураМатематика
МедицинаМеханикаОбразованиеОхрана трудаПедагогика
ПолитикаПравоПрограммированиеПсихологияРелигия
СоциологияСпортСтроительствоФизикаФилософия
ФинансыХимияЭкологияЭкономикаЭлектроника

// stringC.cpp : Defines the entry point for the console application.



Клас 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-х гг.

mybiblioteka.su - 2015-2024 год. (0.006 сек.)