|
C++Идея состоит в том, чтобы класс сам был структурой фиксированного размера, управляющей доступом к фактической памяти вектора, которая выделяется конструктором вектора с помощью распределителя свободной памяти new: vector::vector(int s) (* if (s«=0) error(bad vector size); // плохой размер вектора sz = s; v = new int[s]; *) Теперь вы можете описывать вектора типа vector почти столь же элегантно, как и вектора, встроенные в сам язык: vector v1(100); vector v2(nelem*2-4); Операцию доступа можно определить как int amp; vector::operator[](int i) (* if(i«0 !! sz=i) error(«vector index out of range); // индекс выходит за границы вектора return v[i]; *) Операция !! (ИЛИИЛИ) это логическая операция ИЛИ. Ее правый операнд вычисляется только тогда, когда это необходимо, то есть если вычисление левого операнда дало ноль. Возращение ссылки обеспечивает то, что запись [] может использоваться с любой стороны операции присваивания: v1[x] = v2[y]; Функция со странным именем ~vector это деструктор, то есть функция, описанная для того, чтобы она неявно вызывалась, когда объект класса выходит из области видимости ...» |
Код для вставки книги в блог HTML
phpBB
текст
|
|