Я много искал, что не могу понять, но я действительно не нашел правильного ответа на небольшую дилемму, которую я имею о функциях «друг» и «нет». Итак, вот оно ...Дилемма друзей и немощных вопросов
Это пример код, чей рисунок похож на соответствующие коды, которые я видел:
struct SampleClass
{
friend void foo1(SampleClass &rhs);
void foo2();
private:
int bar;
};
void foo1(SampleClass& rhs)
{
rhs.foo2();
}
void foo3(SampleClass& rhs)
{
rhs.foo2();
}
int main()
{
SampleClass samp;
foo1(samp); //friend function
foo3(samp); //not a friend function but has the same effect
return 0;
}
Почему, как мы используем функцию класса нечлена, который был идентифицирован с помощью «друга "ключевое слово похоже на функцию, которая не является? И почему не может первая функция (функция «friend» ed) получить доступ к переменной «bar», зная, что функция или класс «друга» может получить доступ к закрытым членам класса хоста?
У меня возникли проблемы понять, что вы имеете в виду. 'foo2' явно публично. Попробуйте ввести 'rhs.bar = 5;' вместо 'rhs.foo2();' тогда вы увидите разницу. – PeterT
Просьба включить код для того, о чем вы смущены. Как там, кажется, здесь нет никаких вопросов. ('bar', единственная' частная' вещь, никогда не обращается.) – Potatoswatter