Podstawy programownia – laboratorium
Katedra Podstaw Informatyki
mgr inż. Barbara Fryc
1
Laboratorium nr 3
Programowanie obiektowe w C++. Konstruktor kopiujący.
Przeciążenie operatorów.
P
RZYKŁAD
:
K
ONSTRUKTOR KOPIUJĄCY
Color (const Color & wzor){
//definicja konstruktora kopiującego
this->r = wzor.r;
this->g = wzor.g;
this->b = wzor.b;
strcpy (this->name, wzor.name);
cout<<”Pracuje konstruktor kopiujacy!!!!”<<endl;
}
//definicja operatora porównania
int operator== (const Color & wzor)
{
if((wz.r ==r) && (wz.g== g)&& (wz.b== b)&&(strcpy(wz.name, name));
return 1;
else
return 0;
}
//definicja operatora wyjścia poza klasą
friend ostream & operator <<(ostream & wy, Color & p)
{
wy<<" x= "<<p.r;
wy<<" x= "<<p.g;
wy<<" x= "<<p.b;
wy<<" y= "<<p.name<<endl;
return wy;
}
Podstawy programownia – laboratorium
Katedra Podstaw Informatyki
mgr inż. Barbara Fryc
2
Z
ADANIA
1. Dla klasy Osoba z poprzedniego zadania opracować :
- konstruktor kopiujący:
Osoba(const Osoba& wzorzec);
- funkcję składową '= =' klasy Osoba do porównywania obiektów.
int operator = = (const Osoba& por);
Funkcja ma zwracać 1 gdy obiekty mają takie same składowe: imie, nazwisko, wiek; wartość 0 w
przeciwnym wypadku. Do porównywania składowych - tablic znaków - użyj funkcji bibliotecznej
strcmp
(
string.h
).
- wpisywania do strumienia wyjściowego dane Osoby. Funkcja powinna być zaprzyjaźniona z klasą
Osoba.
friend ostream& operator << (ostream &str_wy, const Osoba& osoba);
- funkcję operatorową wprowadzającą dane Osoby do strumienia wejściowego, zaprzyjaźniona z klasą
Osoba:
friend istream& operator >> (istream &str_we, Osoba& osoba);
- operator przypisania dla klasy Osoba, którego prototyp ma postać:
Osoba& operator=(const Osoba& wzor);
2. Przetestuj działanie nowych funkcje.
void main()
{
Osoba osoba1;
Osoba osoba3;
Osoba osoba2("Ewa", "Pierwsza", 80, 76.3);
osoba1.zapisz("Jan", "Nowak",0);
osoba2.wypisz();
osoba1.wypisz();
osoba2=osoba1;
cout<<osoba1;
cout<<osoba2;
cout<<"Podaj dane osoby:";
cin>>osoba3;
cout<<osoba3<<endl;
cout<<(osoba3==osoba2);
}