C+ si C++ Curs 8
Cursul 8O OClase (continuare) qinitializarea membru cu membru qX& X::operator=(const X&) OClase parametrizate qstive parametrizate (stivap.h, stivap1.h) qcozi parametrizate qliste parametrizate qprieteni si clase parametrizate Olista liniara ordonata #include #include template class NodStiva { Elt elt; NodStiva *leg; public: friend class Stiva;}template class Stiva { NodStiva *virf; public: Stiva() { virf = NULL; } ~Stiva() { } void push(Elt&); void pop(); Elt& top();};template void Stiva::push(Elt& un_e){ NodStiva *p = new NodStiva; assert (p != 0); p->elt = un_e; p->leg = virf; virf = p;}template void Stiva::pop(){ if (virf) { NodStiva *p = virf; virf = p->leg; delete p; }}template Elt& Stiva::top(){ assert(virf != 0); Elt *pelt = new Elt; *pelt = virf->elt; return *pelt;// return virf->elt;} #include template class Stiva { Elt *ptab; int virf; public: Stiva(); ~Stiva() { } void push(Elt&); void pop(); Elt& top();};template Stiva::Stiva(){ ptab = new Elt[MAX_STIVA]; virf = -1;}template void Stiva::push(Elt& un_e){ assert(virf < MAX_STIVA); ptab[++virf] = un_e;}template void Stiva::pop(){ if (virf >= 0) virf--;}template Elt& Stiva::top(){ assert (virf >= 0); Elt *pe = new Elt; *pe = ptab[virf]; return *pe;}