AUTOSAR C++14 Rule A11-3-1

Друг объявления не должен использоваться

Описание

Управляйте определением

Друг объявления не должен использоваться.

Объяснение

Вы объявляете, что функция как друг класса получает доступ к членам парламента, не занимающим официального поста класса вне осциллографа класса.

class A
{
  int data;
  public:
    // operator+ can access private members of class A such as data
    friend A const operator+(A const& lhs, A const& rhs);
};
Друг функционирует и друг, классы уменьшают скрытие данных. Члены парламента, не занимающие официального поста класса более не доступны только через методы класса.

Код с другом функции может затруднить, чтобы обеспечить. Например, если класс myClass имеет друга класс anotherClass, когда вы изменяете элемент данных myClass, необходимо найти все экземпляры его использования в функциях членства anotherClass.

Реализация Polyspace

Средство проверки правила отмечает все использование friend ключевое слово.

Средство проверки следует за спецификациями C++ AUTOSAR 14 релизов 18-03 (март 2018). Однако релиз 18-10 и более поздние релизы C++ AUTOSAR 14 позволяют исключение для операторов сравнения, таких как operator==. Если средство проверки правила отмечает использование операторов сравнения, добавьте комментарий, выравнивающий по ширине результат. Смотрите Результаты Polyspace Адреса Через Исправления ошибок или Выравнивания.

Поиск и устранение проблем

Если вы ожидаете нарушение правила, но не видите его, обратитесь к Кодированию Стандартных Нарушений, Не Отображенных.

Примеры

развернуть все

class myClass
{
  int data;
  public:
    myClass& operator+=(myClass const& oth);
    friend myClass const operator+(myClass const& lhs, myClass const& rhs);
    // Noncompliant: Use of friend keyword 
};

operator+ друг функция класса myClass и может получить доступ к его члену парламента, не занимающему официального поста, data. Присутствие этого друга функция нарушает правило.

Проверяйте информацию

Группа: членское управление доступом

Введенный в R2019a