Можно создать дубликат:
Invoking a nonconst method on a member from a const methodПочему функция-член-член может вызывать функцию не-const-члена через указатель-член?
Постоянные функции-члены имеют возможность вызывать не постоянное функции члена через переменные членов указатель в C++, это, как ожидалось? Ниже дают фрагмент кода успешно
#include <iostream>
class S {
public:
void hi() {
std::cout << "Hi" << std::endl;
}
};
class T {
public:
T()
: s(new S())
{}
~T()
{
delete s;
}
void hi() const {
s->hi();
}
private:
S * s;
};
int main(int argc, char ** argv) {
T t;
t.hi();
return 0;
}
Мы не объявили S * const s внутри класса. То как он может быть постоянным указателем? – Kenta