cześć wszystkim mam pytanie odnośnie funkcji friend w klasach bo gdzieś na forum przeczytałem że jest to łamanie zasad hermetyzacji? - ograniczania dostępu do obiektu i nie powinno się ich stosować natomiast w książce szkoła programowania c++ autor zaleca ich stosowanie co więcej podaje że jeżeli chodzi o niektóre wersje przeciążonych operatorów jest to jedyne możliwe wyjście np jeżeli pierwszym argumentem który przyjmuje operator ma być obiekt inny od tego w jakiej funkcja friend się znajduje np ostream przykładowy kod
#include <iostream>
#include <fstream>
#include <cstdlib>
using std::cin;
using std::cout;
using std::endl;
using std::string;
using std::istream;
using std::ostream;
class c_root
{
private:
string name;
string ID;
public:
c_root();
c_root(string n1, string n2);
friend istream & operator>>(istream & in, c_root & n1);
friend ostream & operator<<(ostream & out, const c_root & n1);
};
c_root::c_root() : name(""), ID("")
{
//--------------------
}
c_root::c_root(string n1, string n2) : name(n1), ID(n2)
{
//--------------------
}
istream & operator>>(istream & in, c_root & n1)
{
cout<< "name: "; in>> n1.name;
cout<< "ID: "; in>> n1.ID;
return in;
}
ostream & operator<<(ostream & out, const c_root & n1)
{
out<< "name: " << n1.name <<endl;
out<< "ID: " << n1.ID <<endl;
return out;
}
więc jak to wygląda w praktyce?