Two cases when forward declaring is not enough: a 'missing' destructor and covariant return types in overrides.
Sort: