Это просто правило, вот и все.
Он предназначен для упрощения написания функций-членов, особенно таких, как операторы присваивания, конструкторы копирования и перегруженные операторы. Если вы не можете получить доступ к членам «другого» объекта напрямую, вам понадобится множество friend
объявлений или некрасивых «получателей»; последние, как правило, предлагают чуть больше, чем обход инкапсуляции.
Возможно, способ, которым вы предлагаете, мог бы быть по умолчанию, и для ввода частных и защищенных членов и функций могло потребоваться объявление
friend class;
Но C ++ не был спроектирован таким образом, и это предложение теперь станет ужасным прорывом. Что-то, над чем можно размышлять, чтобы восстановить ожидаемое поведение, может быть декларацией
friend class = delete;
что, насколько я могу судить, не будет серьезным изменением. Почему бы не предложить что-то в этой форме Комитету ISO C ++?