R Справочное руководство по С++

R.14.6 Функции-члены шаблонов типа.

   


Назад  |  Вперёд

Функция-член шаблонного класса считается неявной шаблонной функцией, а параметры шаблона типа для ее класса - ее шаблонными параметрами. Приведем пример, в котором описаны три шаблона типа для функции:

           template<class T> class vector {
              T* v;
              int sz;
           public:
              vector(int);
              T& operator[](int);
              T& elem(int i) { return v[i]; }
              // ...
           };

Функцию, выполняющую индексацию, можно определить следующим образом:

           template<class T> T& vector<T>::operator[](int i)
           {
             if (i<0 || sz>=i) error("vector: range error");
             return v[i];
           }

Шаблонный параметр для vector<T>::operator[]() будет задаваться тем типом vector, к которому применяется операция индексации.

           vector<int> v1(20);
           vector<complex> v2(30);

           v1[3] = 7;            // vector<int>::operator[]()
           v2[3] = complex(7,8); // vector<complex>::operator[]()

Назад  |  Вперёд


OtDiatlovaOU
К началу книги

Оформление и дизайн книги OtDiatlovaOU.
Вся книга, архив.