Да и нет. В основном нет.
Частные и защищенные члены - это действительно время компиляции. Он помогает компилятору не допускать глупых ошибок в коде. И компилятор делает это, отказываясь создавать ассемблерный код, который нарушает ограничения.
Таким образом, в полученном исполняемом файле нет кода, который нарушал бы правила, потому что такой код никогда не был бы успешно скомпилирован. В этом смысле ограничения все еще существуют.
Но на уровне сборки или аппаратного обеспечения нет ничего подобного частному или защищенному. Это просто байты. Если бы вы писали код непосредственно в ассемблере, вы могли бы прочитать все закрытые переменные C ++, и ничто не остановило бы вас.