If feature C depends on features A and B in the sense that both should be implemented, verified and correct for C to work correctly, then the canonical way is to delay development of C until the feature branches of both A and B have been merged back to develop (or master, depending on what your main development branch is) and only create the feature branch ...
Merging two features
If you merge feature branch B into feature branch A, then A contains both the features of A and B. That's what merging is, after all.
This means that you no longer have two separate feature branches with individual lifecycles. When A gets merged into master, that also entails B's features (which are now in A) being merged into master.
You seem to assume that developing a feature requires a feature branch. In this case, the canonical branching would look like:
\ \--A--/ \ /
\--B--/ \ /
But what happens if after the merge, adjustments are required for A and B? What if furthermore these appear to be required for C? And what ...