Guest User

Untitled

a guest
Jun 24th, 2018
127
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 5.70 KB | None | 0 0
  1. // egzamin.cpp : Defines the entry point for the console application.
  2. //
  3.  
  4. #include "stdafx.h"
  5. #include <iostream>
  6. #include <string>
  7.  
  8. using namespace std;
  9.  
  10.  
  11.  
  12. class abstract{
  13. public:
  14.     virtual void pokaz() = 0;
  15.  
  16. };
  17.  
  18.  
  19.  
  20. class A: public abstract {
  21. private:
  22.     int liczba;
  23. public:
  24.     static int licznik;
  25.     friend void funkcyjka(A &o1);
  26.    
  27.     A(){
  28.         liczba = 0;
  29.         licznik++;
  30.        
  31.       }
  32.  
  33.     A(int liczba) { this->liczba = liczba; licznik++;}
  34.  
  35.     virtual void pokaz(){cout <<"liczba: " <<  this->liczba <<endl;}
  36.  
  37.     int& get_liczba(void){ return liczba;}
  38.     void set_liczba(int argument) { this->liczba = argument;}
  39.  
  40.    
  41.     // PRZYPISANIE
  42.      A * operator=(A &o1)
  43.     {
  44.         liczba = o1.liczba;
  45.         return this;
  46.     }
  47.  
  48.      // MNOZENIE
  49.      A * operator*(A &o1)
  50.      {
  51.          A *nowy;
  52.          nowy = new A;
  53.          nowy->get_liczba() = liczba*o1.liczba;
  54.          return nowy;
  55.      }
  56.  
  57.      // NAWIASY []
  58.  
  59.      int* operator[] (int x)
  60.      {
  61.          
  62.          return &this->liczba;              //zwarac adres na liczbe
  63.      }
  64.  
  65.      // NAWIASY ()
  66.  
  67.      int operator() ()
  68.      {
  69.          return this->liczba;               // zwraca liczbe
  70.      }
  71.  
  72.      // STRZALKA ->
  73.  
  74.      string operator-> ()
  75.      {
  76.          string z = " jestem juz zmeczony ";
  77.          return z;
  78.      }
  79.  
  80.      ~A(){};
  81.  
  82. };
  83.  
  84.  
  85. class B: virtual public A{
  86. public:
  87.     friend class C;
  88.     int liczbaB;
  89.     A *wskazniczek1;
  90.    
  91.     B(){liczbaB = 0;
  92.         wskazniczek1 = new A;}
  93.  
  94.     B(int liczbaB) {this->liczbaB = liczbaB;
  95.                     wskazniczek1 = new A;}
  96.  
  97.     void pokaz(){cout <<"liczba: " <<  this->liczbaB <<endl;}
  98.  
  99.     int zwroc_z(){return z;}
  100.    
  101.     B(B *o1)
  102.     {
  103.         this->liczbaB = o1->liczbaB;
  104.         this->wskazniczek1 = new A;
  105.         this->wskazniczek1 = o1->wskazniczek1 ;
  106.     }
  107.  
  108.      ~B(){ delete wskazniczek1; }
  109.    
  110. private:
  111.     int z;
  112.  
  113. };
  114.  
  115.  
  116. class C {
  117. public:
  118.     C();
  119.     void static zmien_wartosc_B(int x, B &o1){ o1.z = x;}
  120.                                      
  121.     ~C(){};
  122.  
  123. };
  124.  
  125.  
  126.  
  127.  
  128.  
  129. // WYJSCIE
  130. ostream & operator<< (ostream &wyjscie, B &o1)
  131. {
  132.  
  133.     return wyjscie << o1.liczbaB <<endl;
  134.  
  135. }
  136. //WEJSCIE
  137. istream &operator>>(istream &wejscie, A &o1)
  138. {
  139.     int nowa_liczba;
  140.     cout<<"podaj nowa liczbe: ";
  141.     cin >> nowa_liczba;
  142.     o1.get_liczba() = nowa_liczba;
  143.     return wejscie;
  144. }
  145.  
  146. // DODAWANIE
  147. A *operator+(A o1, A o2)
  148. {
  149.  
  150.     A *nowy;
  151.     nowy = new A;
  152.  
  153.     nowy->get_liczba() = o1.get_liczba() + o2.get_liczba();
  154.  
  155.     return nowy;
  156. }
  157.  
  158. int A::licznik = 0; // STATIC
  159.  
  160.  
  161.  
  162. void funkcyjka(A &o1) // zaprzyjazniona funkcja ma dostep do zmiennych prywatnych
  163. {
  164.     o1.liczba = o1.liczba *2;
  165.  
  166. }
  167.  
  168.  
  169. int _tmain(int argc, _TCHAR* argv[])
  170. {
  171.    
  172.  
  173.     A jeden;
  174.     jeden.get_liczba() = 3;
  175.     cout<< jeden.get_liczba() <<endl;
  176.     A dwa(2);
  177.     cout << dwa.get_liczba() <<endl;
  178.    
  179.     cout <<"------------sterta------------------"<<endl;
  180.     A *wsk;
  181.     wsk = new A;
  182.  
  183.     for(int i =0; i <5; i++)
  184.     {
  185.         wsk[i].get_liczba() = i*2;
  186.     }
  187.     for(int i =0; i <5; i++)
  188.     {
  189.         cout << wsk[i].get_liczba()<<endl;
  190.     }
  191.     cout <<"------------stos--------------------"<<endl;
  192.  
  193.         A wsk2[5];
  194.  
  195.     for(int i =0; i <5; i++)
  196.     {
  197.         wsk2[i].get_liczba() = i*3;
  198.     }
  199.     for(int i =0; i <5; i++)
  200.     {
  201.         cout << wsk2[i].get_liczba()<<endl;
  202.     }
  203.  
  204.     cout <<"---------sterta wskaznikow-------------"<<endl;
  205.  
  206.     A **wsk3 ;
  207.     wsk3 = (A**)(malloc(sizeof(A*)*10));
  208.    
  209.  
  210.     for(int a=0; a<10; a++)
  211.     {
  212.     //*(wsk3+a) = new A[10];               //moze byc to
  213.     *(wsk3+a) = (A*)malloc(sizeof(A)*10);  // albo to
  214.     }
  215.  
  216.  
  217.     for (int i=0; i<10; i++)
  218.     {
  219.     for (int n=0; n<10; n++)
  220.         {
  221.       wsk3[i][n].get_liczba() = i*n+1;
  222.       cout << wsk3[i][n].get_liczba() << "  " ;
  223.         }
  224.     cout<<endl;
  225.     }
  226.  
  227.     cout<<endl <<"---------------2------------------"<<endl<<endl;
  228.  
  229.     cout <<"---------konstruktor kopiujacy-------------"<<endl;
  230.     cout <<"---------przeciazony operator wyjscia-------------"<<endl<<endl;
  231.     B *loool;
  232.     loool = new B;
  233.     B trzy(loool);
  234.  
  235.  
  236.     cout << *loool <<endl;
  237.     cout << trzy <<endl<<endl;
  238.     cout <<"---------przeciazony operator wejscia-------------"<<endl<<endl;
  239.    
  240.     A przyklad1;
  241.  
  242.     cin >> przyklad1;
  243.  
  244.     cout <<"liczba: " << przyklad1.get_liczba()<<endl<<endl;
  245.    
  246.     cout <<"---------przeciazony operator przypisania-------------"<<endl<<endl;
  247.      A przyklad2;
  248.     // cout <<"przed " << &przyklad2 <<endl;
  249.      przyklad2=przyklad1;
  250.     // cout <<"po " << &przyklad2 <<endl;
  251.      cout << przyklad2.get_liczba()<<endl;
  252.  
  253.      cout <<"---------przeciazony operator mnozenia-------------"<<endl<<endl;
  254.      A *przyklad3;
  255.      przyklad3 = new A;
  256.      przyklad3 = przyklad2*przyklad1;
  257.      cout << przyklad3->get_liczba()<<endl;
  258.  
  259.  
  260.      cout <<"---------przeciazony operator dodawania-------------"<<endl<<endl;
  261.       A *przyklad4;
  262.      przyklad4 = new A;
  263.      A cos1, cos2;
  264.      cos1.get_liczba() = 5;
  265.      cos2.get_liczba() = 6;
  266.  
  267.      przyklad4 = cos1+cos2;
  268.  
  269.      cout << przyklad4->get_liczba() << endl;
  270.  
  271.  
  272.      cout <<"---------przeciazony operator () i []-------------"<<endl<<endl;
  273.  
  274.      int wartosc;
  275.      int *adres;
  276.      adres = cos1[1];
  277.      wartosc = cos1();
  278.  
  279.      cout << "adres: " << adres << "  wartosc: " << wartosc <<endl;
  280.  
  281.      cout <<"---------przeciazony operator -> -------------"<<endl<<endl;
  282.      A *smth;
  283.      string spac;
  284.      string *spac2;
  285.  
  286.      //->spac;
  287.      // NIE MAM POJECIA JAK TO SIE ROBI
  288.      //cout << "przeciazona strzalka: " << smth->get_liczba()<<endl;
  289.      cout <<"---------dziedziczenie po abstrakcyjnej-------------"<<endl<<endl;
  290.  
  291.      B cos3;
  292.      cos3.liczbaB = 5;
  293.  
  294.      cos1.pokaz();
  295.      cos3.pokaz();
  296.  
  297.      cout <<"---------zaprzyjaznienie klas-------------"<<endl<<endl;
  298.  
  299.  
  300.    
  301.  
  302.      C::zmien_wartosc_B(2, cos3);
  303.  
  304.      cout << "zmiana: " << cos3.zwroc_z() << endl;   // zmiana zmiennej prywatnej ktora jest deklarowana w innej klasie
  305.  
  306.  
  307.  
  308.      cout <<"---------w kontener + polimorfizm-------------"<<endl<<endl;
  309.  
  310.      abstract *tablica[3];
  311.  
  312.      tablica[0] = &cos1;
  313.      tablica[1] = &cos2;
  314.      tablica[2] = &cos3;
  315.  
  316.  
  317.      tablica[0]->pokaz();
  318.      tablica[1]->pokaz();
  319.      tablica[2]->pokaz();
  320.  
  321.     cout << " zakonczono! " <<endl;
  322.     system ("pause");
  323.     return 0;
  324. }
Add Comment
Please, Sign In to add comment