наследования при порождении обычных классов. Как шаблоны, так и наследование представляют собой механи ш для повторного использования кода и могут включать полиморфизм. Они - отличительные особенности C++ и поэтому могут комбинироваться в различных формах. Класс-шаблон может быть порожден от обычного класса. Обычный класс может быть порожден от класса- шаблона. Каждая из этих возможностей ведет к различным отношениям. Каждый реализованный класс-шаблон требует собственного откомпилированного объектного модуля, template <class Т> class vect_safe: private vect { public: vect_safe() {} void set(T *d) { vect::set \ i >• Дружественные функции Дружественные функции для каждого типа Т могут быть друзьями всех классов типа Т. Это обычные дружественные функции. Дружественные функции для типа Т могут быть друзьями класса типа Т. Дружественные функции могут предваряться спецификацией template. Для типов Т и U, функции-шаблоны типа U являются дружественными функциями каждому классу типа Т. template<class Т> class Person { freind void Pet(); friend void Spouse(Person &); template<class U> freind void Coworker(U&); }; void Pet() { /* ...* /} // Обычная функция template<class T>void Spouse(Person &p) {} template<class U>void Coworker(U &u) {] Здесь Pet() - функция, дружественная Person<T> для каждого типа Т. Person<int> Pet() Person<char> Person<float>
RkJQdWJsaXNoZXIy MTExODQxMg==