Actually friend concepts came into c++ from friend in real world. I am friend of you It does not mean my kids will be friend of u. So inheritance should not work. If class A is friend of B, Class B is friend of C then it does not mean the A is frined of C. Just map it to real world. So transitive does not work. suppose i trust on you that you are my friend but it does not mean that he also consider me as a friend. So reciprocol does work in a friend.