Sunteți pe pagina 1din 2

#include<iostream> using namespace std; // Sa se creeze clasa Tablou class Tablou{ // Initializare clasa private: // zona privata unde

se trec atributele char*autor; // auto * char float latime; // latime exprimata in cm float inaltime; // inaltime exprimata in cm int an_pictare; // int public: // zona publica //Sa se defineasca constructorii cu si fara parametrii Tablou(){ // constructor fara parametrii latime=0; inaltime=0; an_pictare=0; this->autor=new char[strlen("Anonim")+1]; // alocare memorie pentru pointer strcpy(autor,"Anonim"); // } Tablou(char*NUME , float L , float I ,int AN){ this->an_pictare=AN; this->inaltime=I; this->latime=L; this->autor=new char [strlen(NUME)+1]; // Alocare de memorie pentru autor strcpy(autor,NUME); } // Pentrul unul din atributele clasei sa se furnizeze metode publide ce acces (scriere si citire) /*void SetAutor(char*NUME){ // Ster pentru Autor! Aceste este seterul cu dezalocare de memorie ! delete[] autor; //dezalocare de memorie autor=new char [strlen("NUME")+1]; strcpy(autor,NUME); } char* GetAutor(){ // Geter pentru Autor return this->autor; }*/ void SetLatime(float L){ //Seter pentru Latime ... E mult mai usor this->latime=L; } float GetLatime(){ // Geter pentru latime return this->latime; } // Sa se defineasca Destructor , Constructorul de copiere si operatorul "=" pentru clasa ~Tablou(){ //Destructorul obiectului cu stergere de memorie ocupata de pointer delete[] autor; } Tablou(Tablou&t){ // Constructorul de copiere this->an_pictare=t.an_pictare; this->inaltime=t.inaltime; this->latime=t.latime; this->autor=new char[strlen(t.autor)+1]; strcpy(this->autor,t.autor); }

Tablou operator=(Tablou& t){ // Supraincarcare operator "=" delete[] this->autor; this->autor=new char[strlen(t.autor)+1]; strcpy(this->autor,t.autor); this->an_pictare=t.an_pictare; this->inaltime=t.inaltime; this->latime=t.latime; return (* this); } float SuprafataPictata(){ // Metoda Suprafata Pictata return latime*inaltime; } friend ostream& operator <<(ostream& iesire, Tablou T); // suprascriere operator "<<" friend istream& operator >>(istream& intrare, Tablou T);// suprascriere operator ">>" }; ostream& operator <<(ostream& iesire, Tablou T) // corpul functiei ostream << { iesire<<"Autorul este " << T.autor<<" si are inaltime de "<< T.inaltime<<" cm"<<" si latimea de "<< T.latime<<" cm"<<" iar anul in care a fost pictat este "<<T.an_pictare<<endl; return iesire; } istream& operator >>(istream& intrare, Tablou T){ // Corpul funtiei istream >> cout << "Introduceti autorul tabloului: "; cin >> T.autor; cout << "Introduceti latimea tabloului(cm): "; cin >>T.latime; cout << "Introduceti inaltimea tabloului(cm): "; cin >> T.inaltime; cout << "Introduceti anul in care a fost pictat tabloul: "; cin >> T.an_pictare; return intrare; } void main() { Tablou T("Anonim",10,10,2000); Tablou Copy=T; Tablou EC=T; Tablou F; F=T; EC=T; cout<<T; cin>>T; cout<<T; }

S-ar putea să vă placă și