MISRA C++:2008 Rule 9-3-1
const member functions shall not return non-const pointers or references to class-data
Description
Rule Definition
const member functions shall not return non-const pointers or references to class-data.1
Rationale
A const object cannot be changed post initialization and can only invoke class member functions that are also declared as const. These member functions are not expected to change the state of the object.
If a const member function returns a non-const pointer or reference to a data member of the class, the function can modify the state of an object and violate developer expectations. To avoid this situation, when you define a const member function that returns a reference or a pointer to a class data member, specify the return type as const.
Polyspace Implementation
Polyspace® flags a violation of this rule only if a const member function returns a non-const pointer or reference to a non-static data member. The rule does not apply to static data members.
Troubleshooting
If you expect a rule violation but Polyspace does not report it, see Diagnose Why Coding Standard Violations Do Not Appear as Expected.
Examples
Check Information
| Group: Classes |
| Category: Required |
Version History
Introduced in R2013b
1 All MISRA coding rules and directives are © Copyright The MISRA Consortium Limited 2021.
The MISRA coding standards referenced in the Polyspace Bug Finder™ documentation are from the following MISRA standards:
MISRA C:2004
MISRA C:2012
MISRA C:2023
MISRA C++:2008
MISRA C++:2023
MISRA and MISRA C are registered trademarks of The MISRA Consortium Limited 2021.