Friend functions and operator overloading : friend function « Class « C++ Tutorial






#include <iostream>
#include <string>

using namespace std;
class MyClass
{
    friend void Peek(const MyClass& aMyClass);
    friend ostream& operator<<(ostream& os, const MyClass& aMyClass);

public:
    MyClass(const string& name = "");

private:
    string m_Name;
};

MyClass::MyClass(const string& name):
    m_Name(name)
{}

void Peek(const MyClass& aMyClass);
ostream& operator<<(ostream& os, const MyClass& aMyClass);

int main()
{
    MyClass myObject("A");

    Peek(myObject);

    cout << myObject;

    return 0;
}

void Peek(const MyClass& aMyClass)
{
    cout << aMyClass.m_Name << endl;
}

ostream& operator<<(ostream& os, const MyClass& aMyClass)   
{
    os << "MyClass Object - ";
    os << "m_Name: " << aMyClass.m_Name;
    return os;
}








9.22.friend function
9.22.1.A friend function
9.22.2.Friend functions can be shared by two or more classes
9.22.3.A function can be a member of one class and a friend of another
9.22.4.Share friend function between classes
9.22.5.friend square() function for Distance
9.22.6.Friend functions and operator overloading
9.22.7.Friend functions can access private members of a class