Объектно-ориентированное программирование на языке С++. Лясин Д.Н - 32 стр.

UptoLike

Составители: 

32
ность объявлять внешнюю по отношению к классу функцию дружественной дан-
ному классу. Для этого необходимо в теле класса описать некоторую внешнюю по
отношению к классу функцию с использованием ключевого слова friend.
friend имя_функции ( список_формальных_параметров);
Функция - не член класса, - имеющая доступ к его закрытой части, называет-
ся другом этого класса
.[Страуструп] Дружественная функция имеет доступ ко
всем компонентам класса вне зависимости от их области видимости. Дружествен-
ная функция класса может быть обычной внешней функцией программы, а может
компонентной функцией другого класса.
Дружественная функция становится расширением интерфейса класса, и этот
интерфейс реализует взаимодействие объекта с другими объектами программы.
Рассмотрим простой пример
.
//Листинг 15. Дружественные функции классов
class ClassB;
class ClassA
{ int x;
friend void func(ClassA,ClassB); //объявляем функцию дружественной классу ClassA
};
class ClassB
{ int y;
friend void func(ClassA,ClassB); //объявляем функцию дружественной классу ClassВ
};
void func(ClassA a,ClassB b)
{
cout <<a.x+b.y;//дружественная функция имеет доступ к частным компонентам обоих
// классов
}
main()
{
ClassA a;
ClassB b;
func(a,b);
}
ность объявлять внешнюю по отношению к классу функцию дружественной дан-
ному классу. Для этого необходимо в теле класса описать некоторую внешнюю по
отношению к классу функцию с использованием ключевого слова friend.
   friend имя_функции ( список_формальных_параметров);
     Функция - не член класса, - имеющая доступ к его закрытой части, называет-
ся другом этого класса.[Страуструп] Дружественная функция имеет доступ ко
всем компонентам класса вне зависимости от их области видимости. Дружествен-
ная функция класса может быть обычной внешней функцией программы, а может
– компонентной функцией другого класса.
     Дружественная функция становится расширением интерфейса класса, и этот
интерфейс реализует взаимодействие объекта с другими объектами программы.
Рассмотрим простой пример.
//Листинг 15. Дружественные функции классов
     class ClassB;
     class ClassA
       { int x;
          …
         friend void func(ClassA,ClassB); //объявляем функцию дружественной классу ClassA
          …
       };
       class ClassB
       { int y;
         …
         friend void func(ClassA,ClassB); //объявляем функцию дружественной классу ClassВ
          …
        };
     void func(ClassA a,ClassB b)
     {
     cout <