Язык программирования C++ для профессионалов



           

Интерфейсные классы - часть 4


void f() { vector v(10); // диапазон [0:9]

// как будто v в диапазоне [1:10]:

for (int i = 1; i<=10; i++) { v[i-1] = ... // не забыть пересчитать индекс

} // ... }

Лучшее решение дает класс vec c произвольными границами индекса:

class vec : public vector { int lb; public: vec(int low, int high) : vector(high-low+1) { lb=low; }

int& operator[](int i) { return vector::operator[](i-lb); }

int low() { return lb; } int high() { return lb+size() - 1; } };

Класс vec можно использовать без дополнительных операций, необходимых в первом примере:

void g() { vec v(1,10); // диапазон [1:10]

for (int i = 1; i<=10; i++) { v[i] = ...

} // ... }

Очевидно, вариант с классом vec нагляднее и безопаснее.

Интерфейсные классы имеют и другие важные области применения, например, интерфейс между программами на С++ и программами на другом языке (§12.1.4) или интерфейс с особыми библиотеками С++.

on_load_lecture()

Дальше »

  Если Вы заметили ошибку - сообщите нам.  

Страницы:

« |

1

|

2

|

3

|

4

|

5

|

6

|

7

|

8

|

9

|

10

|

11

|

вопросы | »

|

учебники

|

для печати и PDA

Курсы | Учебные программы | Учебники | Новости | Форум | Помощь



Телефон: +7 (495) 253-9312, 253-9313, факс: +7 (495) 253-9310, email: info@intuit.ru

© 2003-2007, INTUIT.ru::Интернет-Университет Информационных Технологий - дистанционное образование




Содержание  Назад  Вперед