public

Модификатор доступа public делает члены класса доступными из любого места программы.

class MyClass {
public:
    int publicData; // Доступен из любого места программы
    void publicMethod(); // Доступен из любого места программы
};

private

Модификатор доступа private делает члены класса доступными только внутри самого класса и из его дружественных функций и классов, антипод public.

class MyClass {
private:
    int privateData; // Доступен только внутри класса
    void privateMethod(); // Доступен только внутри класса
};

Пример

class Example {
public:
    int publicVar; // Доступен везде
    void setPrivateVar(int value) {
        privateVar = value; // Изменение private-переменной через public-метод
    }
    int getPrivateVar() {
        return privateVar; // Доступ к private-переменной через public-метод
    }
private:
    int privateVar; // Доступен только внутри класса
};
 
int main() {
    Example ex;
    ex.publicVar = 10; // Прямой доступ к public-переменной
    ex.setPrivateVar(20); // Изменение private-переменной через public-метод
    int value = ex.getPrivateVar(); // Получение значения private-переменной через public-метод
    return 0;
}