Facebook
From Denim Plover, 5 Years ago, written in Plain Text.
Embed
Download Paste or View Raw
Hits: 257
  1. #include <iostream>
  2.  
  3.  const float pi = 3.14159;
  4.  class Figura
  5.  {
  6.    public:
  7.      virtual float pole() const
  8.      {
  9.        return -1.0;
  10.      }
  11.  };
  12.  
  13.  class Kwadrat : public Figura
  14.  {
  15.    public:
  16.      Kwadrat( const float bok ) : a( bok ) {}
  17.  
  18.      float pole() const
  19.      {
  20.        return a * a;
  21.      }
  22.    private:
  23.      float a; // bok kwadratu
  24.  };
  25.  
  26.  class Kolo : public Figura
  27.  {
  28.    public:
  29.      Kolo( const float promien ) : r( promien ) {}
  30.  
  31.      float pole() const
  32.      {
  33.        return pi * r * r;
  34.      }
  35.    private:
  36.      float r; // promien kola
  37.  };
  38.  
  39.  void wyswietlPole( Figura &figura )
  40.  {
  41.    std::cout << figura.pole() << std::endl;
  42.    return;
  43.  }
  44.  
  45.  int main()
  46.  {
  47.    // deklaracje obiektow:
  48.    Figura jakasFigura;
  49.    Kwadrat jakisKwadrat( 5 );
  50.    Kolo jakiesKolo( 3 );
  51.    Figura *wskJakasFigura = 0; // deklaracja wskaźnika
  52.  
  53.    // obiekty -------------------------------
  54.    std::cout << jakasFigura.pole() << std::endl; // wynik: -1
  55.    std::cout << jakisKwadrat.pole() << std::endl; // wynik: 25
  56.    std::cout << jakiesKolo.pole() << std::endl; // wynik: 28.274...
  57.  
  58.    // wskazniki -----------------------------
  59.    wskJakasFigura = &jakasFigura;
  60.    std::cout << wskJakasFigura->pole() << std::endl; // wynik: -1
  61.    wskJakasFigura = &jakisKwadrat;
  62.    std::cout << wskJakasFigura->pole() << std::endl; // wynik: 25
  63.    wskJakasFigura = &jakiesKolo;
  64.    std::cout << wskJakasFigura->pole() << std::endl; // wynik: 28.274...
  65.  
  66.    // referencje -----------------------------
  67.    wyswietlPole( jakasFigura ); // wynik: -1
  68.    wyswietlPole( jakisKwadrat ); // wynik: 25
  69.    wyswietlPole( jakiesKolo ); // wynik: 28.274...
  70.  
  71.    return 0;
  72.  }