friend C++ изменение значения переменной класса
Разбираюсь в том, как работает friend
в c++.
Правильно ли я понимаю, что friend
используется для изменения объектов класса, в том числе и private
. В таком случае в реальных условиях friend
используется для тестирования корректной работы классов? Какие еще типичные юзкейсы могут сопровождаться данной конструкцией?
Какая реализация test_friend_func
может привести к изменению test_vector
в примере ниже?
#include <vector>
class test_class{
friend void test_friend_func();
std::vector<int> test_vector;
public:
test_class(){}
void foo(){
//...
}
};
Ответы (1 шт):
Ну я бы не говорил так — "для изменения"... Для доступа.
Примеры? Например, описываем оператор вывода ostream&<<
— или надо выводить только то, что доступно по открытому интерфейсу, или можно сделать этот оператор другом и просто обращаться к чему угодно.
Но, как и в обычной жизни, дружба — занятие достаточно опасное, если друг готов навредить... :)