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

We use cookies. Read the Privacy and Cookie Policy

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[]()