Virtual inheritance says that only one copy of the ancestor classes memory should be included in an object, regardless how many times it is found in the inheritance chain. It is used to solve the problem of multiple copies of a single parent classes that can occur when multiple inheritance is permitted.