Pentru a oferi un acces facil la date prin intermediul mecanismului unei chei publice de clasă nu este întotdeauna convenabil, deoarece în acest caz, variabilele de instanță publice sunt disponibile imediat, adică, să-l pot aplica pentru oricine din orice parte a programului. Un mecanism numit „prieteni ai clasei“ într-o mai flexibilă și vă permite să acordați selectiv de acces. De exemplu, puteți acorda acces la variabile ale clasei private doar pentru o funcție sau clasă.
Prietenii de clasă - funcționează și clase care au acces deplin la clasă, la fel ca și metodele de clasă. Pentru drepturile altora, funcția trebuie să fie descrisă în caietul de sarcini de clasă prieten.
De exemplu, determinată de o funcție independentă care intrările de date de la tastatura la clasa obiectului MyStr. Pentru a face acest lucru, avem nevoie pentru a descrie caracteristici prietenoase clasa MyStr prototip:
using namespace std;
char * buf; // datele private
// functie prototip prietenos
prieten void inpstr (MyStr, int);
num int static; // contor numărul de serie
int nn; // numărul liniei de serie
>; // clasa definiție end
// defini funcția prieten
void inpstr (MyStr s, int n)
fs = new char [n + 1]; // obține larma. memorie
cout<<"ввод с клавиатуры:"; // «приглашение» для ввода
int main (int argc, char * argv [])
MyStr c3 = c1; // Crearea unui obiect c3 și atribuirea un c1 valoare
cout<<"c1-"; // отображаем объект ввода
inpstr (c1,10); // apelează funcția prieten
cout<<"новый Объект с1"< Până în prezent, am rezolvat problemele cu utilizarea individuală a fiecărui clasa, dar pentru a crea baza de date matrice cerute de obiecte de clasă. Crearea de rețele de obiecte, cum ar fi MyStr V [10], avem nevoie de un constructor cu inițializare implicită. Acest constructor poate arata astfel: // implicit este alocată în șirul de 60 de caractere buf = "liber"; // string constant Creați o serie de obiecte implicite și imprimați-l ca un tabel. // metoda pentru a afișa datele obiect în formă tabelarăarticole similare