> That may be the case in practice but it is not literally true, since semantically, inheritance is effectively a form of copy-and-paste in the compiler.
No, not really. The whole point of inheritance is declaring new types by implementing specifying interfaces in a way that specify type hierarchies.
If your goal was code reuse and "copy-and-paste" then nothing would beat composition. If you decide instead to go with inheritance, you have far more requirements to meet that go way beyond code reuse.