а была решена выделением разли
Автор admin Суббота, 16 мая 2009 11:32
а была решена выделением различий в новую абстракцию. Операции с символами были абстрагированы в шаблон char_traits, у которого имеются стандартные специализации для char и wchar_t (см. главу 3). Итак, чтобы сравнить две строки, basic_string просто вызывает шаблон traits::compare() (вспомните: traits является вторым параметром шаблона), который в свою очередь вызывает strcmp() или wcscmpO в зависимости от того, какая именно специализация используется (причем все это происходит незаметно для basic_string). Вам придется думать о char_traits только при вызове низкоуровневых функций обработки символов; в большинстве случаев различия в именах функций для вас несущественны. Впрочем, подумайте, не стоит ли определить операторы » и « в виде шаблонов на тот случай, если кто-нибудь захочет их использовать с расширенными потоками. Чтобы было понятнее, вспомните оператор для вывода Date, приведенный в начале этой главы. В исходном варианте его объявление выглядело так: ostream& operator«(ostream&. const Date&): Такое объявление годится только для узких потоков. Обобщение производится преобразованием в шаблон на баз
Комментарии закрыты.
Последние комментарии