Правила программирования на Си и Си++


         

int rows, int cols


Листинг 10. Вспомогательные классы
1  #include <iostream.h>
2
3  class int_array
4  {
5     class row
6     {
7        friend class
int_array;
8        int *first_cell_in_row;
9
10       row( int *p ) : first_cell_in_row(p) {}
11    public:
12       int &operator[] ( int index );
13    };
14
15    int nrows;
16    int ncols;
17    int *the_array;
18
19 public:
20    virtual
21       ~int_array( void           );
22        int_array( int rows, int
cols );
23
24        row operator[] (int index);
25 };
26 //========================================================
27 // функции-члены класса int_array
28 //========================================================
29 int_array::int_array( int rows, int cols )
30                         : nrows ( rows )
31                         , ncols ( cols )
32                         , the_array ( new int[rows * cols])
33 {}
34 //--------------------------------------------------------
35 int_array::~int_array( void )
36 {
37    delete [] the_array;
38 }
39 //--------------------------------------------------------
40 inline int_array::row int_array::operator[]( int index )
41 {
42    return row( the_array + (ncols * index) );
43 }
44 //========================================================
45 // функции-члены класса int_array::row
46 //========================================================
47 inline int
&int_array::row::operator[]( int index )
48 {
49    return first_cell_in_row[ index ];
50 }
51
52 //========================================================
53 void main ( void )      // ..§
54 {
55    int_array ar(10,20); //
то же самое, что и ar[10][20], но
55                         // размерность
во время компиляции
56    ar[1][2] = 100;      // может быть не определена.
57    cout << ar[1][2];
59 }

Часть 8в. Ссылки

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





Forekc.ru
Рефераты, дипломы, курсовые, выпускные и квалификационные работы, диссертации, учебники, учебные пособия, лекции, методические пособия и рекомендации, программы и курсы обучения, публикации из профильных изданий