A friend function in C++ can access the private and protected members of a class. It is declared inside the class using the friend keyword. A friend function is not a member of the class and is defined outside the class like a normal function. It can access private and protected members of its friend class but cannot access members directly. A friend class can also access private and protected members of another class where it is declared as a friend.