Конспект-справочник 'Моделирование на C++'



Download 1,26 Mb.
Pdf ko'rish
bet52/62
Sana20.03.2022
Hajmi1,26 Mb.
#504043
1   ...   48   49   50   51   52   53   54   55   ...   62
Шаблоны (template) 
Шаблоны позволяют писать уже знакомые языковые конструкции - 
функции и классы с используемыми в них типами, задаваемыми параметрами. 
Например, класс комплексных чисел может быть определен как для 
сотавляющих типа 'double', так и для 'float' и даже 'int'. Без шаблонов пришлось 
бы писать три одинаковых класса. Шаблоны позволяют отвлечься от 
особенностей типов и написать класс, использующий некий неопределенный 
тип 'T', который в дальнейшем примет значения 'double', 'float' и 'int'. 
Шаблонизация производится с помощью ключевого слова 'template'. Языком 
поддерживаются шаблоны классов и шаблоны функций. 
Шаблоны классов (class templates) 
Шаблоны класов позволяют создавать классы C++ с типами и значениями 
в качестве параметров объявления класса. 
// объявление шаблона класса 
template 
Т> // можно также написать 'template ' -
// 
варианты идентичны 
class Complex 

T re, im; 
86 


public: 
Complex(); 
Complex(T re, T im); 
}; 
 
// определение конструктора по умолчанию 
template 
Т> 
Complex::Complex(): re{0},im{0} 


// определение конструктора инициализации 
template 
Т> 
Complex::Complex(T r, T i): re{r},im{i} 


 
// создание объекта на основе шаблона класса 
Complex x;
Complex y; 
Complex z(1,1); 
Шаблон раскрывается компилятором C++ в обычный класс с 
подстановкой вместо формального параметра-типа факического типа, 
указанного при инстанциировании. В коде из примера выше будут созданы три 
класса по одному для каждого из параметров 'double', 'float', 'int'. Например, для 
'double' 
будет создан такой класс: 
class Complex 

double re, im; 
public: 
Complex(); 
Complex(double re, double im); 
}; 
Определение методов аналогично тому, как они определяются в обычных 
классах можно дать при объявлении класса либо в файле реализации указав что 
метод принадлежит шаблону класса. 
// Определение внутри класса 
template 
Т> 
class Complex 

... 
Complex(double re, double im): this->re{re}, this->im{im} 

... 

87 


... 
}; 
 
// Определение вне класса. Необходимо отдельно указать
// 
что это метод класса-шаблона 
template 
Т> 
Complex::Complex(double re, double im): this->re{re}, this->im{im} 

... 

В шаблоне можно задать число параметров больше одного или их 
переменное число (0 или больше). Можно комбинировать определенные 
параметры и переменные. 
template 
Т, typename U> // два параметра - два типа, которые при
// 
инстанциировании получат
// 
собственные значения 
class A; 
A x; 
// инстанциирование шаблона с двумя параметрами 
 
template 
Т, typename ...U> // один обязательный параметр и
// 
переменное число параметров. 
class B; 
B y; 
// инстанцирование шаблона с переменным числом параметров.
// 
Здесь после int могут быть перечислены один или более
// 
параметров 
Кроме типов параметрами шаблона могут выступать значения. 
Аналогично функциям параметры шаблонов могут иметь значения по 
умолчанию. 
template 
// Шаблон с параметрами
// 
по умолчанию 
class D; 
 
// Возможные варианты инстанциирования такого шаблона 
D x; 
D y; 
D z; 
// в качестве параметров указаны и типы и
// 
значение параметра 

Download 1,26 Mb.

Do'stlaringiz bilan baham:
1   ...   48   49   50   51   52   53   54   55   ...   62




Ma'lumotlar bazasi mualliflik huquqi bilan himoyalangan ©hozir.org 2024
ma'muriyatiga murojaat qiling

kiriting | ro'yxatdan o'tish
    Bosh sahifa
юртда тантана
Боғда битган
Бугун юртда
Эшитганлар жилманглар
Эшитмадим деманглар
битган бодомлар
Yangiariq tumani
qitish marakazi
Raqamli texnologiyalar
ilishida muhokamadan
tasdiqqa tavsiya
tavsiya etilgan
iqtisodiyot kafedrasi
steiermarkischen landesregierung
asarlaringizni yuboring
o'zingizning asarlaringizni
Iltimos faqat
faqat o'zingizning
steierm rkischen
landesregierung fachabteilung
rkischen landesregierung
hamshira loyihasi
loyihasi mavsum
faolyatining oqibatlari
asosiy adabiyotlar
fakulteti ahborot
ahborot havfsizligi
havfsizligi kafedrasi
fanidan bo’yicha
fakulteti iqtisodiyot
boshqaruv fakulteti
chiqarishda boshqaruv
ishlab chiqarishda
iqtisodiyot fakultet
multiservis tarmoqlari
fanidan asosiy
Uzbek fanidan
mavzulari potok
asosidagi multiservis
'aliyyil a'ziym
billahil 'aliyyil
illaa billahil
quvvata illaa
falah' deganida
Kompyuter savodxonligi
bo’yicha mustaqil
'alal falah'
Hayya 'alal
'alas soloh
Hayya 'alas
mavsum boyicha


yuklab olish