Code goes first:
class A
{
public:
...
int *foo() const
{
return _px;
}
private:
int *_px;
}
The member function foo returns a non-const pointer to private member _px, which, I think, opens a door to modifying member _px, right?
Is foo a const member function? Should I add a const in front of the return type?
UPDATE
What a const-member-function should guarantee is that, it cannot change any data-member, right?
In my case, function foo doesn't open a door to modifying class As data-member _px, but a door to modifying what _px pointing to, So my question is, does this violate what a const-function should guarantee?
A
constmember function can only return aconstpointer or reference to a member.However, your example isn't returning a pointer to a member; it's returning a copy of a member that happens to be a pointer. That is allowed in a
constmember function (even if the pointer happens to point to another member).This would not be allowed (note that it's now returning a reference):
but this would (returning a
constreference):