Hi ! Please help me for call transfer

I have to transfer calls from Zap to Zap, from Sip to Zap, from Iax to Zap, from Zap to Iax, from Zap to Sip, etc…
Is there a general rule for doing this ?
I have to do this :
A is outside, B and C are extensions of my pbx. When A calls B, B answers, and may want to transfer the call to C. When B wants to do that, he can dial C and tell him “hey, it’s B, A wants to talk with you”. When A hangs up, B and C can talk together.
Could you help me, please ?