Wednesday, May 18, 2011

3.3 - Konstruktor es Destruktor

Egy osztaly konstruktorai harom kategoria sorolhatok

- alapertelmezett(implicit)
- masolo(copy)
- mas konstruktor

3.2 - Statikus tagok

Az alabbi pelda szemlelteti a statikus tagok deklaraciojat, definiciojat es hasznalatat.

#include 
using namespace std;

class InstanceCounter{
 private:
  static int counter; //Deklaracio
  int i;
 public:
  InstanceCounter(int _i=0) : i(_i){counter++;}
  ~InstanceCounter(){counter--;}
  static int getCounter(){return counter;}
};

int InstanceCounter::counter=0; //Definico

int main(){
 cout<<"Peldanyszam" << InstanceCounter::getCounter() << endl;
 InstanceCounter o1 o2 o3;
 cout<<"Peldanyszam" << InstanceCounter::getCounter() << endl;
 InstanceCounter * p = new InstanceCounter(10);
 cout<<"Peldanyszam" << InstanceCounter::getCounter() << endl;
 delete p;
 cout<<"Peldanyszam" << InstanceCounter::getCounter() << endl;
 return 0;
}

3.1 - Implicit parameterek

Pelda:
Datum(int ev=0,int ho=0, int nap=0){
// stb
}

3.0 - Osztalyok es Objektumok

Minden programozas nylev rendelkezik egy alapertelmezett tipushalmazzal es lehetoseget biztosit ennek felhasznaloi tipusok altali kiterjesztesere.
C nyelvben felhasznaloi tipust a struct  kulcsszoval vezethettunk be.
C++ nyelvben a struktura tipus is atalakul, nemcsak adattagokat, hanem metodusokat is tartalmazhat. Az osztalydeklaracio a class  kulcsszot es az osztalynevet tartalmazza. Pelda: class Alma;
Az osztalydefiniciot 2 forrasallomanyba szokas elhejezni. A fejallomanyban (.h) az osztaly definicio, az adattagokat illetve a metodus deklaraciokat tartalmazza es a metodusok definicioit egy C++ forrasfajlban szokas elhelyezni, ugy ahogyan a Stack modul eseteben is tetunk.
Pelda: datum.h
class Datum{
 private:
  int ev, ho, nap;
 public:
  Datum(int _ev, int _ho, int _nap);
};

Egy osztaly tagjai haromfele lathatosaguak lehetnek
- privat (private)
- vedett (protected)
- nyilvanos (public)