Advertisement
Guest User

Динамичко алоцирање

a guest
Mar 17th, 2018
111
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 2.19 KB | None | 0 0
  1. #include<iostream>
  2. #include<cstring>
  3. using namespace std;
  4.  
  5. class Soba{
  6. private:
  7. int x;
  8. int y;
  9. public:
  10.     Soba(){}
  11.     Soba(int x,int y){
  12.     this->x=x;
  13.     this->y=y;
  14.     }
  15. };
  16.  
  17. class Kukja{
  18. private:
  19. char *adresa; // динамично алоцирана низа - адреса
  20. Soba *s; // динамично алоцирана низа од објекти од Soba
  21. int sobi;
  22. public:
  23.     Kukja(){} // default constructor
  24.     Kukja(char *adresa,Soba *s,int sobi){ // parameter constructor
  25.     this->adresa=new char[strlen(adresa)+1];
  26.     strcpy(this->adresa,adresa);
  27.     this->sobi=sobi;
  28.     this->s=new Soba[sobi];
  29.     for(int i=0;i<this->sobi;i++){
  30.     this->s[i]=s[i];
  31.     }
  32.     }
  33.  
  34.     Kukja(const Kukja &k){  // copy constructor
  35.     this->adresa=new char[strlen(k.adresa)+1];
  36.     strcpy(this->adresa,k.adresa);
  37.     this->sobi=k.sobi;
  38.     this->s=new Soba[k.sobi];
  39.     for(int i=0;i<this->sobi;i++){
  40.     this->s[i]=k.s[i];
  41.     }
  42.     }
  43.  
  44.     Kukja& operator=(Kukja &k){ // operator = ( isto ko copy constructor samo na kraj vrakjame tekovniot objekt *this
  45.     this->adresa=new char[strlen(k.adresa)+1]; // kazuvame kolku ke bide dolga nizata t.e. kolku memorija ke zafakja
  46.     strcpy(this->adresa,k.adresa); // koga sme obezbedile kolku ke bide dolga, ja kopirame
  47.     this->sobi=k.sobi; // obicen int ne e dinamicki alociran
  48.     this->s=new Soba[k.sobi]; // kazuvame kolkava ke bide nizata
  49.     for(int i=0;i<this->sobi;i++){ // so for gi prefrlame site objekti zoshto nema drug nachin, strcpy e samo kaj char nizi
  50.     this->s[i]=k.s[i];
  51.     }
  52.     return *this; // vrakjame objektot levo od = primer: Kukja k = a; ke prefrli site promenlivi od a vo k i na kraj ke vrati vrednostite vo k
  53.     }
  54.     void print(){
  55.     cout<<"Kukjata e na adresa "<<adresa<<endl;
  56.     }
  57. };
  58.  
  59. int main(){
  60. Soba *sobi; // dinamicki alocirana niza od sobi
  61. int n;
  62. cin>>n;
  63. sobi=new Soba[n];
  64. int x,y;
  65. for(int i=0;i<n;i++){
  66.     cin>>x>>y;
  67.     sobi[i]=Soba(x,y); // ja polnime nizata so sobi t.e. vnesuvame informacii za sekoj objekt vo nizata
  68. }
  69. char adresa[50];
  70. cin>>adresa;
  71. Kukja k(adresa,sobi,n);
  72. Kukja c(k); // povik na copy constructor
  73. Kukja p=c; // povik na operator =
  74. p.print();
  75. return 0;
  76. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement