Inheritance allows one class to inherit properties from another parent class. This creates a hierarchy where child classes inherit behavior from the parent class and can add or override behavior. There are three types of access specifiers that determine whether inherited members are public, private, or protected. Virtual functions allow runtime polymorphism by overriding functions in derived classes. Pure virtual functions define an interface that derived classes must implement.