Лекция
Привет, сегодня поговорим про друзья классов, обещаю рассказать все что знаю. Для того чтобы лучше понимать что такое друзья классов, дружественная функция , настоятельно рекомендую прочитать все из категории С++ (C plus plus).
дружественная функция – это функция, которая, не являясь компонентом класса, имеет доступ к его защищенным и собственным компонентам. Такая функция должна быть описана в теле класса со спецификатором friend.
Пример 1.7.1
Пример 1.7.1
class myclass
{
int x,y;
friend void set(myclass*,int,int);
public:
myclass(int x1,int y1){x = x1; y = y1;}
int sum(void){return (x+y);}
};
void set(myclass *p,int x1,int y1){p–>x = x1; p–>y = y1;}
void main(void)
{
myclass A(5,6);
myclass B(7,8);
cout<<A.sum();
cout<<B.sum();
set(&A,9,10);
set(&B,11,12);
cout<<A.sum();
cout<<B.sum();
}
Функция set описана в классе myclass как дружественная и определена как обычная глобальная функция (вне класса, без указания его имени, без операции ‘ : : ‘ и без спецификатора friend).
Дружественная функция при вызове не получает указатель this. Об этом говорит сайт https://intellect.icu . Объекты класса должны передаваться дружественной функции только через параметр.
Итак, дружественная функция:
· не может быть компонентной функцией того класса, по отношению к которому определяется как дружественная;
· может быть глобальной функцией;
· может быть компонентной функцией другого ранее определенного класса.
Например,
class CLASS1
{. . .
int f(. . .);
. . .
};
class CLASS2
{. . .
friend int CLASS1 : : f(. . .);
. . .
};
// В этом примере класс CLASS1 с помощью своей компонентной функции f( )
// получает доступ к компонентам класса CLASS2.
· может быть дружественной по отношению к нескольким классам;
Например,
// предварительное не полное определение класса
class CL2;
class CL1
{friend void f(CL1,CL2);
. . .
};
class CL2
{friend void f(CL1,CL2);
. . .
};
// В этом примере функция f имеет доступ к компонентам классов CL1 и CL2.
В общем, мой друг ты одолел чтение этой статьи об друзья классов. Работы впереди у тебя будет много. Смело пиши комментарии, развивайся и счастье окажется в твоих руках. Надеюсь, что теперь ты понял что такое друзья классов, дружественная функция и для чего все это нужно, а если не понял, или есть замечания, то не стесняйся, пиши или спрашивай в комментариях, с удовольствием отвечу. Для того чтобы глубже понять настоятельно рекомендую изучить всю информацию из категории С++ (C plus plus)
Из статьи мы узнали кратко, но содержательно про друзья классов
Комментарии
Оставить комментарий
С++ (C plus plus)
Термины: С++ (C plus plus)