Читайте также:
|
|
В виде дружественных функций обычно описываются действия не представляющие собой свойства класса, но по сути входящие в его интерфейс, например, операции вывода объектов.
Объявляются внутри класса со спецификатором friend и должны иметь в качестве параметра объект или ссылку на объект.
Например, class A {… friend f (A&, int);…}
Дружественная функция может быть обычной функцией или методом другого класса, определенного ранее.
На нее не распространяется действие спецификаторов доступа.
Одна функция может быть дружественной сразу нескольким классам.
Отметим, что использование дружественных функций нарушает принцип инкапсуляции и таким образом затрудняет отладку программы.
Хорошим стилем программирования считается объявление дружественных функций в классе непосредственно после его заголовка без предварения каким-либо спецификатором доступа.
class B;// объявили класс
Class A
{
…
public: void f1(B &);….
}
Class B
{
friend int f2 (B& k) {return ++k.a;}
friend void A::f1(B& k) {k.a=0;}
Int a;
}
# include <iostream.h>
Class Count
{
friend void setX (Count &, int);
public:
Count () {x=0;}
void print () const {cout<<x<<”\n”;}
private:
Int x;
};
void setX (Count &c, int val) {c.x=val;}
Main()
{
Count object;
cout<<”object.x после своего создания: ”;
Дата добавления: 2015-10-02; просмотров: 70 | Нарушение авторских прав
<== предыдущая страница | | | следующая страница ==> |
Свойства деструкторов | | | Object.print(); |