Program do tematu Klasy zaprzyjaźnione - folder Friend2
#include <conio.h> //do getch()
#include <stdio.h> //do printf()
#include <string.h> //do strcpy()
//W programie mamy dwie klasy. Druga będzie zaprzyjaźniona z pierwszą.
class klasa1 //definiujemy pierwszą klasę
{friend class klasa2; //Klasa1 deklaruje, że jej klasą zaprzyjaźnioną jest klasa2.
private: //składniki prywatne
int x, y; //cechy - liczby całkowite
char nazwa[10]; //cecha - jakiś napis
public: //składniki publiczne
void wpisz(int x1, int y1, char *n)
{ x=x1; y=y1; strcpy(nazwa,n); } //metoda wpisze wartości do cech
void wypisz() { printf("\nNazwa: %10s X = %4d Y = %4d",nazwa,x,y); }
//metoda wypisze wartości cech na ekran
}; //koniec definicji klasy klasa1
class klasa2 //teraz definiujemy drugą klasę
{
private: //składniki prywatne
int l, m; //cechy - liczby całkowite
int suma; //ta cecha to suma wartości cechy l i cechy x (klasa1)
int roznica; //ta cecha to różnica wartości cechy m i cechy y (klasa1)
char nazwa1[20]; //cecha - napis, nazwa
public: //składniki publiczne
void wpisz(int l11, int l21, char *n) { l=l11; m=l21; strcpy(nazwa1,n); }
//metoda wpisze wartości do cech
void wypisz() { printf("\nNazwa: %10s L = %4d M = %4d",nazwa1,l,m); }
//metoda wypisze wartości na ekran
void dodaj(klasa1 ob)
//Metoda klasy klasa2. Ale ponadto wykorzystuje obiekt klasy klasa1 jako argument.
{ suma=l+ob.x;
//Dodajemy cechę l tej klasy i cechę x klasy klasa1. Klasa2 to przyjaciel klasy1.
printf("\n\n\tSuma L i X = %10d",suma); //wypisujemy wartość sumy na ekran
} //koniec definicji metody dodaj
void odejmij(klasa1 ob) //tutaj podobnie, jak powyżej
{ roznica=m-ob.y; //tutaj odejmujemy cechę y klasy klasa1 od cechy m klasy klasa2
printf("\n\n\tRoznica M i Y = %7d",roznica); //wypisujemy wynik na ekran
} //koniec definicji metody odejmij
}; //koniec definicji klasy klasa2
main() //funkcja główna main
{ klasa1 obiekt1; obiekt1.wpisz(10,10,"OBIEKT 1"); obiekt1.wypisz();
klasa2 obiekt2; obiekt2.wpisz(30,20,"OBIEKT 2"); obiekt2.wypisz(); obiekt2.dodaj(obiekt1); obiekt2.odejmij(obiekt1);
getch();
}