Inheritance allows classes to inherit and extend the functionality of existing classes without modifying them, creating a hierarchical relationship. There are different types of inheritance like single, multilevel, multiple and hybrid inheritance. The visibility modifier (public, private, protected) determines which members are accessible to derived classes. Virtual base classes avoid duplicate members when multiple inheritance paths exist to a common base class.