друзі класу
Для того, щоб надати легкий доступ до даних класу механізм за допомогою ключа 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"; // константная рядок Створимо масив з об'єктів за замовчуванням і роздрукуємо його у вигляді таблиці. // метод для виведення даних об'єкта в табличному вигляді