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 шт):

Автор решения: Harry

Ну я бы не говорил так — "для изменения"... Для доступа.

Примеры? Например, описываем оператор вывода ostream&<< — или надо выводить только то, что доступно по открытому интерфейсу, или можно сделать этот оператор другом и просто обращаться к чему угодно.

Но, как и в обычной жизни, дружба — занятие достаточно опасное, если друг готов навредить... :)

→ Ссылка