Inheritance allows one class to inherit properties from another base class, creating a hierarchy from general to specific classes. Derived classes inherit all public and protected members of the base class and can add new, class-specific features. This allows for code reuse and reduces time/effort. Access specifiers like public, private, and protected determine which members are inherited. Constructors and destructors execute in order of derivation, with base constructors first and destructors last. Virtual functions support runtime polymorphism by allowing overriding in derived classes. Pure virtual functions define an interface without implementation.