s::beverage_type beverage_type
Автор admin
Четверг, 21 мая 2009 11:32
s::beverage_type beverage_type: typedef typename traits::snack_type snack_type: beverage_type bev: snack_type snack; public: BearCorner(const Guest& g) : theGuest(g) {} void entertainO { cout « Action::doActionO « ” ” « theGuest « ” with ” « bev « ” and ” « snack « endl: } }: int mainO { Boy cr: BearCorner pcl(cr): pel. entertainO: Bear pb: BearCorner pc2(pb): pc2. entertainO: } ///:- Предполагается, что параметр шаблона Action в классе BearCorner содержит статическую функцию doAction(), задействованную в функции BearCornero::entertain(). Пользователь может выбирать между классами Feed и Stuff, каждый из которых содержит нужную функцию. Классы, инкапсулирующие функциональность подобным образом, называются классами политик. В нашем примере «политики» предоставляются через Feed::doAction() и Stuff::doAction(). Здесь классы политик являются обычными классами, но они могут оформляться в виде шаблонов и даже использовать наследование, что открывает дополнительные возможности. Псевдорекурсия и подсчет объектов Даже неопытный программист С++ знает, как отслеживать количество существующи
Комментарии закрыты.
Последние комментарии