Составители:
Рубрика:
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 <
Страницы
- « первая
- ‹ предыдущая
- …
- 30
- 31
- 32
- 33
- 34
- …
- следующая ›
- последняя »