Documente Academic
Documente Profesional
Documente Cultură
Partea a II-a
Intro
Pe nivelul cel mai de jos, un fişier este interpretat ca un flux
de octeţi (stream). Pe nivelul utilizator, fişierul constă dintr-o
secventă de date de tipuri diferite: caractere, numerice,
obiecte.
Exemplu:
template <class TipElem, int dimensiune>
Clase generice
Instanţierea unor obiecte ale claselor template
se face prin construcţia:
NumeClasa < TipDeDateConcret> obiect;
Exemplu:
Triplet <int> obiect;//triplet de intregi
Triplet <TPersoana> obiect;
Cod sursa –ex1
template <class ceva, int lg> int main()
class vector { {printf("\n vector intregi:");
ceva v[lg]; vector<int,4> vi;
public: vi.cit();vi.tip();
vector(){}; printf("\n vector reale:");
void tip();void cit(); vector<float,4> vf;
ceva best();} vf.cit();vf.tip();
printf("\n vector caractere:");
template <class ceva, int lg>
vector<char,4> vc;
void vector<ceva,lg>::tip()
vc.cit();vc.tip();
{ for(int i=1;i<=lg;i++)
cout<<"\t"<<v[i]; } return 0;
}
Ex1: Să se construiască clasa şablon
template <class ceva, int lg> vector pentru care se vor putea
void vector<ceva,lg>::cit() { instanţia obiecte cu semnificaţia:
for(int i=1;i<=lg;i++) cin>>v[i]; } şir de numere întregi, şir de
numere reale sau şir de caractere.
Cod sursa –ex2
#include <iostream.h>
class Complex{ template <class Numar>
double Re; class vector{
double Im; Numar *vect;
public: int dim;
Complex(){}; public: vector(){dim=0;vect=0;}
Complex(double a, double b){Re=a;Im=b;} vector(int l);
//supraincarcarea operatorilor >> şi << void tip(); };//sf clasa generica
friend istream& //definirea constructorului
operator>>(istream&,Complex&); template <class Numar>
friend vector<Numar>::vector(int l)
ostream&operator<<(ostream&,Complex); { dim=l;
};//class Complex vect=new Numar[dim];
istream& operator>>(istream& intrare, Complex &z) for(int i=1;i<=dim;i++)
{ cin>>vect[i];
cout<<"\nRe:";cin>>z.Re; }
cout<<"\nIm:";cin>>z.Im; //definirea metodei de afisare
return intrare; template <class Numar>
}//sf operator>> void vector<Numar>::tip()
ostream& operator<<(ostream& iesire, Complex z) {for(int i=1;i<=dim;i++)
{ cout<<"\t"<<vect[i];
cout<<z.Re<<"+i"<<z.Im; }
return iesire; void main()
} {vector<double> vd(4);
vd.tip();
vector<Complex> vc(4);
vc.tip();}