Сегодня я узнал, что такой код работает. Это звучит очень странно для меня, потому что, насколько я всегда знал, вы не можете изменить кого-либо из членов функции-члена. Вы фактически не можете сделать это напрямую, но вы можете вызвать функцию non-const member. если вы отмечаете функцию-член как const, это означает, что этот указатель, переданный функции, указывает на объект const, то как не-const-функция-член вызывается в следующем примере?
#include <iostream>
class X
{
public:
void foo() const
{
ptr->bar();
}
void bar() {}
private:
X * ptr;
};
int main()
{
}