C++ access specifiers determine the visibility of class members during inheritance. There are three access specifiers: private, protected, and public. Private members are only accessible within the class, protected within the class and derived classes, and public everywhere. When a class derives from a base class, the access specifiers change the accessibility of base class members in the derived class depending on whether private, protected, or public derivation is used.