Exercise: Questions on friend keyword


Questions on friend keyword : Question 1 :
Predict the output of following program.
#include <iostream>
using namespace std;
class A
{
protected:
    int x;
public:
    A() {x = 0;}
    friend void show();
};

class B: public A
{
public:
    B() : y (0) {}
private:
    int y;
};

void show()
{
    A a;
    B b;
    cout << "The default value of A::x = " << a.x << " ";
    cout << "The default value of B::y = " << b.y;
}

Compiler Error in show() because x is protected in class A
Compiler Error in show() because y is private in class b
The default value of A::x = 0 The default value of B::y = 0
Compiler Dependent
Show Answer
Questions on friend keyword : Question 2 :
Predict the output the of following program.
#include <iostream>
using namespace std;

class B;
class A {
    int a;
public:
    A():a(0) { }
    void show(A& x, B& y);
};

class B {
private:
    int b;
public:
    B():b(0) { }
    friend void A::show(A& x, B& y);
};

void A::show(A& x, B& y) {
    x.a = 10;
    cout << "A::a=" << x.a << " B::b=" << y.b;
}

int main() {
    A a;
    B b;
    a.show(a,b);
    return 0;
}

Compiler Error
A::a=10 B::b=0
A::a=0 B::b=0
Show Answer