In my experience, inheritance works best in trivial examples like that one you have, but breaks down quickly in larger projects. It's not an abstraction that generalizes well.
I think something like "delegation" can cover the "struct embedding" case.