MISRA C++:2008 Rule 11-0-1

Данные члена в не - типы классов POD должны быть частными

Описание

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

Данные члена в не - типы классов POD должны быть частными.

Объяснение

Если классы имеют элементы данных, которые публично доступны, другие классы и функции могут взаимодействовать с элементами данных класса непосредственно. Любое изменение в классе может потребовать обновления клиентов, которые используют класс. Если класс не является типом простых данных (POD), ограничивание доступа к его элементам данных включает инкапсуляцию класса. В таком инкапсулированном классе детали реализации класса непрозрачны клиентам, которые используют его. Класс сохраняет контроль над своей реализацией и может быть обеспечен независимо, не влияя на клиенты, которые используют класс.

Реализация Polyspace

Polyspace® отмечает нечастные элементы данных в классах, которые не являются типами POD. Пробел Polyspace использует то же определение классов POD как стандарт.

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

Если вы ожидаете нарушение правила, но не видите его, относитесь, чтобы Диагностировать, Почему Кодирующие Стандартные Нарушения Не Появляются как ожидалось.

Примеры

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

class nonPOD{
	nonPOD(){
		//...
	}
	~nonPOD(){
		//...
	}
	public:
	int getX();
	int setX(int&);
	int getY();
	int setY(int&);
	int getZ();
	int setZ(int&);
	int x; //Noncompliant
	protected:
	int y; //Noncompliant
	private:
	int z;
};

В этом примере, элементы данных y и z не private. Polyspace отмечает их.

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

Группа: управление доступом члена
Категория: необходимый
Введенный в R2013b