++


         

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
, , , , , , , , , ,