я Friendly, не отделяя определ
Автор admin
Четверг, 21 мая 2009 11:32
я Friendly, не отделяя определение от объявления, но мы решили оставить его в форме, больше соответствующей предыдущему примеру. Остался еще один последний вариант использования дружественных функций в шаблонах: их полное определение внутри определения шаблона класса. Вот как будет выглядеть предыдущий пример в этом варианте: //: C05:FriendScope3.cpp {-bor} // Microsoft: необходим ключ -Za (режим ANSI) #include using namespace std: 224 Глава 5 • Шаблоны tempiate class Friendly { T t: public: Friendly(const T& theT) : t(theT) {} friend void f(const Friendly& fo) { cout « fo.t « endl; } void g() { f(*this): } }: void h() { f(Friendly(D): } int mainO { h(): Friendly(2).g(): } III- Между этими двумя примерами существует важное различие: здесь f является не шаблоном, а обычной функцией (вспомните, что раньше угловые скобки сообщали компилятору, что f() является шаблоном). При каждой специализации шаблона класса Friendly создается новая обычная перегруженная функция, которая получает аргумент с типом текущей специализации Friendly. Это самый удобный способ определения дружест
Комментарии закрыты.
Последние комментарии