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.
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