A type is a node in a hierarchy. There are semantics related to the actual position, and relative to some other existing types. Together with discrimination, this enforces a view based on classification (as opposed to genericity).
Note that this is strictly different from the view natural e.g. for dynamically typed languages: types are often defined there first as collections of members.
The Liskov Substitution Principle is built-in in C++: overcoming it will defeat assumptions made by the compiler concerning substitutability.