Практикум по объектно-ориентированному программированию на базе языка с++ Учебно-методическое пособие



Pdf көрінісі
бет36/44
Дата21.02.2024
өлшемі0.49 Mb.
#492719
түріПрактикум
1   ...   32   33   34   35   36   37   38   39   ...   44
ООП С

Специализация шаблона-класса. При программировании шабло-
нов классов часто бывает нужно наряду с общим шаблоном иметь специ-
ализированные версии. Для этого в С++ имеется механизм специализа-
ции. Специализация заключается в том, что на основе исходного первич-
ного шаблона создается его специализированная версия, в которой
на место параметров подставлены аргументы (и по-другому реализованы 
некоторые методы – в соответствии с аргументами). Специализация – это 
не присвоение параметров по умолчанию. Шаблон с параметрами по 
умолчанию является первичным шаблоном, который тоже можно специ-
ализировать. Специализация шаблона называется полной, если конкрети-
зированы все аргументы. Если задана только часть аргументов, такая спе-
циализация называется частичной. 
 
template // первичный шаблон
class Class 

// определения полей и методов класса 
}; 
template<> // полная специализация
class Class 
{
// определения полей и методов специализированной версии класса 
}; 


61 
Объект такого класса нужно объявлять, как объект класса-шаблона 
с аргументом void*, например: 
 
Class ddd; 
При частичной специализации конкретизируется только часть пара-
метров первичного шаблона. Для указателей возможна частичная специа-
лизация, даже если параметр шаблона всего один, например: 
template // частичная специализация 
class Class 

// определения полей и методов специализированной версии класса
}; 
Обозначение <Т*> после имени подразумевает, что эта специали-
зация должна использоваться всегда, когда аргументом шаблона является 
указатель любого типа, отличного от void *, для которого «реализована 
более специализированная полная специализация». Определения объек-
тов выглядят так: 
Class ml; //  - это  -> T = date 
Class m2; //  - это  -> T = int 
Class m3; //  - это  -> T = double* 


Достарыңызбен бөлісу:
1   ...   32   33   34   35   36   37   38   39   ...   44




©dereksiz.org 2024
әкімшілігінің қараңыз

    Басты бет