Это хороший вопрос, и я недавно сталкивался с этим вопросом.У меня было несколько дискуссий с моими коллегами, и вот краткое изложение нашей дискуссии: Это сделано специально.Это не означает, что этот дизайн является полностью разумным для всех случаев, но должны быть некоторые соображения, почему для каждого класса выбирается личное.Возможные причины, по которым мы могли бы подумать:
Прежде всего, стоимость контроля доступа за экземпляр может быть очень высокой.Это обсуждалось другими в этой теме.Теоретически это можно сделать с помощью проверки указателя.Однако это не может быть сделано во время компиляции и может быть сделано только во время выполнения.Таким образом, вы должны определить контроль доступа каждого участника во время выполнения, и когда он нарушается, возможно, будут возникать только исключения.Стоимость высока.
Во-вторых, контроль доступа для каждого класса имеет свой собственный вариант использования, например, конструктор копирования или оператор =.Реализовать их было бы сложно, если бы контроль доступа был для каждого экземпляра.
Плюс, контроль доступа в основном с точки зрения программирования / языка, для того, как модулировать / контролировать доступ к коду / элементу, а не к данным..