5.1. Pole objektů

Časová náročnost
Časová náročnost: 10 minut
upozornění Objekty jsou také proměnné a mají tytéž možnosti a atributy jako jiné typy proměnných. Proto je také možné, aby byly sdružovány do polí. Syntaxe deklarace pole je zcela stejná jako syntaxe polí jiných typů proměnných. Pole objektů jsou přístupná jako pole jiných typů proměnných.

Následující program vytvoří čtyř prvkové pole objektů třídy samp a pak plní každý prvek a hodnotou z rozsahu 0 - 3.

src/4_1.cpp
Příklad 5.1.
#include <iostream.h>

class myclass {
  int a, b;
public:
  void set(int i, int j) { a = i; b = j; }
  void show() { cout << a << ' ' << b << "\n"; }
};

int main()
{
  myclass obj1, obj2;

  obj1.set(10, 4);

  // prirazeni obj1 do obj2
  obj2 = obj1;

  obj1.show();
  obj2.show();

  return 0;
}





Jestliže třída obsahuje konstruktor, může být pole objektů inicializováno. Viz následující příklad.

src/5_2.cpp
Příklad 5.2.
#include <iostream.h>
 
class samp {
  int a;
public:
  samp(int n) { a = n; }
  int get_a() { return a; }
};

int main()
{
  samp ob[4] = { -1, -2, -3, -4 };
  int i;

  for(i=0; i<4; i++) cout << ob[i].get_a() << ' ';

  cout << "\n";

  return 0;
}


Samozřejmě můžeme mít i vícerozměrná pole objektů. Následující příklad vytváří dvourozměrné pole objektů.

src/5_3.cpp
Příklad 5.3.
#include <iostream.h>

class samp {
  int a;
public:
  samp(int n) { a = n; }
  int get_a() { return a; }
};

int main()
{
  samp ob[4][2] = {
    1, 2,
    3, 4,
    5, 6,
    7, 8
  };
  int i;

  
  for(i=0; i<4; i++) {
    cout << ob[i][0].get_a() << ' ';
    cout << ob[i][1].get_a() << "\n";
  }

  cout << "\n";

  return 0;
}