друзі класу

Для того, щоб надати легкий доступ до даних класу механізм за допомогою ключа public не завжди зручний, адже в цьому випадку public -змінного стають доступними для широкого загалу, тобто до них може звернутися будь-хто з будь-якої частини програми. Механізм під назвою «друзі класу» діє більш гнучко і дозволяє надавати доступ вибірково. Наприклад, можна надати доступ до закритих змінних класу тільки для будь-якої функції або класу.

Друзі класу - це функції і класи, які мають повний доступ до класу, такий же, як у методів класу. Для отримання прав одного, функція повинна бути описана в класі зі специфікацією friend.

Наприклад, визначимо незалежну функцію, яка вводить дані з клавіатури в об'єкт класу MyStr. Для цього в класі MyStr необхідно описати прототип дружньої функції:

using namespace std;

char * buf; // закриті дані

// прототип дружньої функції

friend void inpstr (MyStr, int);

static int num; // лічильник порядкового номера

int nn; // порядковий номер рядка

>; // кінець визначення класу

// визначення дружньої функції

void inpstr (MyStr s, int n)

fs = new char [n + 1]; // отримання дин. пам'яті

cout<<"ввод с клавиатуры:"; // «приглашение» для ввода

int main (int argc, char * argv [])

MyStr c3 = c1; // створення об'єкта с3 і присвоєння йому значення с1

cout<<"c1-"; // отображаем объект ввода

inpstr (c1,10); // виклик дружньої функції

cout<<"новый Объект с1"<

До сих пір ми вирішували завдання з використанням окремих екземплярів класу, але для створення баз даних необхідні масиви об'єктів класу.

Створюючи масиви об'єктів, наприклад MyStr V [10], нам буде потрібно конструктор з ініціалізацією за замовчуванням. Такий конструктор може виглядати, наприклад так:

// за замовчуванням виділяється рядок під 60 символів

buf = "free"; // константная рядок

Створимо масив з об'єктів за замовчуванням і роздрукуємо його у вигляді таблиці.

// метод для виведення даних об'єкта в табличному вигляді