Метод возвращает указатель или ссылку на внутреннего члена объекта
Возвратитесь из указателя неconst на инкапсулированный элемент данных, происходит когда:
Метод класса возвращает указатель на элемент данных. Указатели включают указатели и ссылки.
Метод более доступен, чем элемент данных. Например, метод имеет спецификатор доступа public
, но элементом данных является private
или protected
.
Спецификатор доступа определяет доступность члена класса. Например, к члену класса, объявленному со спецификатором доступа private
, нельзя получить доступ вне класса. Поэтому лицо, не являющееся членом какой-либо организации, недруг функции не могут изменить участника.
Когда метод класса возвращает указатель на менее доступный элемент данных, членские изменения доступности. Например, если метод public
возвращает указатель на элемент данных private
, элементом данных больше является эффективно не private
. Лицо, не являющееся членом какой-либо организации, недруг функциональный вызов метода public
может использовать возвращенный указатель, чтобы просмотреть и изменить элемент данных.
Кроме того, если вы присваиваете указатель на элемент данных объекта к другому указателю, когда вы удаляете объект, второй указатель можно оставить, свиснув. Второй указатель указывает на часть объекта, который больше не существует.
Одна возможная фиксация должна постараться не возвращать указатель на элемент данных от метода класса. Возвратите элемент данных значением так, чтобы копия участника была возвращена. Изменение копии не изменяет элемент данных.
Если необходимо возвратить указатель, использование, спецификатор const
с методом возвращает тип так, чтобы указатель позволил просматривать, но не изменять, элемент данных.
Группа: Объектно-ориентированный |
Язык: C++ |
Значение по умолчанию: 'off' |
Синтаксис командной строки: BREAKING_DATA_ENCAPSULATION |
Влияние: носитель |
ID CWE: 375, 767 |