po 03

background image

Programowanie obiektowe 03

Przeciążanie operatorów

Przykład 1: przeciążanie funkcji

using namespace std;
#include <iostream>

double suma (double a, double b)
{
   return a + b;
}
int suma (int a, int b)
{
   return a + b;
}
int suma (int a)
{
   return a + a;
}
int main ()
{
   double   m = 7,  n = 4;
   int      k = 5,  p = 3;

   cout << suma(m, n) << " , " << suma(k, p) << endl;

   return 0;
}

Zastosowanie: np. w klasie możliwie jest deklarowanie wielu konstruktorów o różnych 
parametrach formalnych.

background image

Przykład 2: przeciążanie operatora <<

using namespace std;
#include <iostream>

class vector

{
   double x;

   double y;
public:

 vector(int a, int b){x=a;y=b;};
};

ostream& operator << (ostream& o, vector a)

{
   o << "(" << a.x << ", " << a.y << ")";

   return o;
}

int main ()

{
   vector a(23,35);

   cout << a << endl;     // (35, 23)

   return 0;

}

Przykład 3: Przeciążenie operatora '*'

using namespace std;
#include <iostream>

struct vector

{
   double x;

   double y;
};

vector operator * (double a, vector b)

{
   vector r;

   r.x = a * b.x;

   r.y = a * b.y;

   return r;
}

int main ()

{
   vector k, m;              // deklaracje struktur

   k.x =  2;                 // k = vector (2, ­1)

background image

   k.y = ­1;                 // 
   m = 3.1415927 * k;        // uzycie operatora ‘*’

   cout << "(" << m.x << ", " << m.y << ")" << endl;

   return 0;
}

Zadanie 1. Zdefiniuj funkcję max:

i

nt max(int, int);

int max(int tab[], n);

Zadanie 2. Napisz klasę student, w której wykorzystuje się operator << do wyswietlenia 
średniej_ocen a i nr_indeksu obiektu Student

class Student
{   
   int nr_indeksu;
   float srednia_ocen; 
   public:
      Student(int nr=0, float sr=0) {nr_indeksu=nr; srednia_ocen=sr;};  // 
konstruktor
      friend ostream & operator<< (ostream &wyjscie, const Student &s);
};

ostream & operator<< (ostream &wyjscie, const Student &s)         
{
   wyjscie << "Nr indeksu : " <<s.nr_indeksu << endl << "Srednia ocen : " 
<<s.srednia_ocen<<endl;
   return wyjscie;
}

Zadanie 3. Napisz klasę complx (liczba zespolona), która wykorzystuje przeciążony operator '+' 
do realizacji sumy obiektów tej klasy.

#include <iostream>
using namespace std;

class complx
{
      double real,
             imag;
public:
      complx( double real = 0., double imag = 0.); // konstruktor
      complx operator+(const complx&) const;       // operator+()
};

// definicja konstruktora
complx::complx( double r, double i )
{
      real = r; imag = i;
}

// definicja przeci onego operatora + (plus) 

ąż

background image

complx complx::operator+ (const complx& c) const
{
      complx result;
      result.real = (this­>real + c.real);
      result.imag = (this­>imag + c.imag);
      return result;
}

int main()
{
      complx x(4,4);//inicjacja obiektow (liczb zespolonych)
      complx y(6,6);
      complx z = x + y; // wywołanie complx::operator+()

Zadanie 4. W klasie Tablica zdefiniuj operator << który będzie służył do wyświetlenia 
zawartości tablicy.

#include <cstdlib>
#include <iostream>

using namespace std;

class Tablica
{
protected:
int rozmiar; // liczba wierszy

int *ti; // adres
public:
Tablica(int n){rozmiar=n;ti = new int[rozmiar];for(int i=0;i<rozmiar;i++) 
ti[i]=0;}// konstruktor
~Tablica(){delete [] ti;}; // destruktor
friend ostream & operator<< (ostream & ob, Tablica & wek);
};

ostream & operator<< (ostream & ob, Tablica & wek)
{
ob << endl << "ELEMENTY WEKTORA " << endl;
for(int i=0; i < wek.rozmiar; i++)
ob << wek.ti[i] << endl;
return ob;
}

int main(int argc, char *argv[])
{
      Tablica tab(3);
      cout<<tab;
   
    system("PAUSE");
    return EXIT_SUCCESS;
}


Wyszukiwarka

Podobne podstrony:
PO 03 09
Po$ 03
Meg Cabot Pośredniczka 03 Kraksa w górach
03 PO Geometria 2013id 4609 Nieznany (2)
03 Spotkanie po latach
po co żyję, W poszukiwaniu utraconej mocy, W poszukiwaniu utraconej mocy / 03 marzec 2008
Laboratorium z PO Zestaw 03 id 261885
2010.09.03 egzamin wentylacja i po ary podziemne rok akad. 2009 2010[1]
Kuchnia francuska po prostu (odc 03) Kolorowe budynie
03 Temat 9 Zegluga po loksodromieid 4509 (2)
03 po trzecie dla draki YPF5GG Nieznany
Egzamin med sadowa po bloku 03 2011r
Żydzi wracają po swoje Nesweek Polska( 03 2004
2019 03 15 Schetyna zabrał głos ws słów Rabieja Jasne stanowisko szefa PO Do Rzeczy
2012 03 14 Środa Po Manifie
Laboratorium z PO Zestaw 03

więcej podobnych podstron