Inheritance allows a derived class to inherit features from a base class. A derived class inherits data members and member functions from the base class and can add its own members. Private members of the base class cannot be accessed directly in the derived class. Constructors are not inherited. Single inheritance refers to deriving from one base class, while multiple inheritance allows deriving from more than one base class. Access restrictions of public, protected, and private determine which members can be accessed where.