Others have talked about this, but I actually state it. Yes, you can use different types, but note that if you are not using a friend, your class cannot access the private members of the class that are passed along with the operator.
A value will not be able to access B :: c because it is closed.
source share